我想从大型语料库中删除所有专有名词。由于体积大,我走捷径,删除所有以大写字母开头的单词。对于每个句子的第一个词,我还想检查它是否是专有名词。如果不使用标记器,我怎么能做到这一点。一种选择是使用常用专有名词列表进行筛选。有没有更好的方法,我在哪里可以获得这样的列表?谢谢。
我尝试了 NLTK pos_tag 和 Standford NER。没有上下文,它们就无法正常工作。
ner_tagger = StanfordNERTagger(model,jar)
names = ner_tagger.tag(first_words)
types = ["DATE", "LOCATION", "ORGANIZATION", "PERSON", "TIME"]
for name, type in names:
if type in types:
print(name, type)
下面是一些结果。
Abnormal ORGANIZATION
Abnormally ORGANIZATION
Abraham ORGANIZATION
Absorption ORGANIZATION
Abundant ORGANIZATION
Abusive ORGANIZATION
Academic ORGANIZATION
Acadia ORGANIZATION
由于句子的第一个字母总是大写,因此误报太多。在我将单词全部改为小写后,NER 甚至漏掉了 America 和 American 等常见实体。
最佳答案
您可以从您的语料库中列出不在句首时大写的单词。布隆过滤器是存储结果的有效方式,因为您愿意容忍误报。
关于python - 如何检查句子的第一个单词是否为专有名词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54658779/