【发布时间】:2016-04-26 23:04:14
【问题描述】:
我正在做一些 NLP,以了解患者何时被诊断出患有多发性硬化症。
我想用 nltk 告诉我一个句子的名词是多发性硬化症。问题是,医生经常将多发性硬化症称为 MS,而 nltk 将其作为专有名词。
例如,这句话“他的 MS 于 1999 年被诊断出”。被标记为:[('His', 'PRP$'), ('MS', 'NNP'), ('was', 'VBD'), ('diagnosed', 'VBN'), ('in', 'IN'), ('1999', 'CD'), ('.', '.')]
MS 在这里应该是一个名词。有什么建议吗?
【问题讨论】:
-
命名实体识别是个难题。试试this。
-
您目前使用的默认词性标注器。因此,在这种情况下,您需要通过包含正确的 POS 标记值来训练自己的语料库。如果不是作为后备机制,您应该在使用默认语料库 POS Tagger 模型后有另一个纠错层。
-
数据的来源是什么?可以分享吗?是否有您希望它们始终是名词的单词/短语/缩写列表?你有标记数据吗?数据的域是什么? POS标记的最终目的是什么?回答这些问题将缩小问题的解决范围。
-
在您的特定示例中,您可以对标记数据进行后处理并将
('MS', 'NNP')更改为('MS', 'NN')。但我猜你不想要那个,你想要一个完美的标记器。您是否考虑过如何确定要覆盖的单词? -
如果 'MS' 不是您唯一的实例,并且您想进行如此大规模的操作,我可能会研究 Word sense disambiguation 并使用医学词典作为最可能含义的基础字。