我正在做一些 NLP,我会发现患者何时被诊断出患有多发性硬化症。
我想用nltk来告诉我一个句子的名词是multiple sclerosis。问题是,医生经常将多发性硬化症称为 MS,nltk 将其作为专有名词。
例如,这句话“His MS was diagnosed in 1999.”被标记为:[('His', 'PRP$'), ('MS', 'NNP'), ('was', 'VBD'), ('diagnosed', 'VBN'), ( '在', 'IN'), ('1999', 'CD'), ('.', '.')]
MS在这里应该是一个名词。有什么建议吗?
最佳答案
总结起来,您有以下选择:
- 在后期处理中更正标签 - 有点难看,但又快又容易。
- 使用外部名称实体识别器(@Bob Dylan 深思熟虑地建议的 Stanford NER)- 这个涉及更多,特别是因为 Stanford NER 在 java 中并且不是特别快。
- 在特定领域的数据上重新训练词性标注器(您是否有足够大的带注释的数据集来使用它?)
- 使用 WSD(词义消歧)方法 - 首先,您需要使用一个好的域词典。
关于python - 有没有办法告诉 NLTK 某个词不是专有名词而是名词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34911264/