python – 如何检查句子的第一个单词是否是专有名词?

我想从大型语料库中删除所有专有名词.由于音量很大,我采用快捷方式删除以大写字母开头的所有单词.对于每个句子的第一个单词,我还想检查它是否是专有名词.如何在不使用标记器的情况下执行此操作.一种选择是使用常用专有名词列表进行筛选.有没有更好的方法,我在哪里可以得到这样的清单?谢谢.

我试过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甚至错过了美国和美国等普通实体.

最佳答案 您可以从您的语料库中创建一个列表,这些列表在不在句子开头时被大写. Bloom过滤器是存储结果的有效方式,因为您愿意容忍误报.

点赞