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

标签 python nlp

我想从大型语料库中删除所有专有名词。由于体积大,我走捷径,删除所有以大写字母开头的单词。对于每个句子的第一个词,我还想检查它是否是专有名词。如果不使用标记器,我怎么能做到这一点。一种选择是使用常用专有名词列表进行筛选。有没有更好的方法,我在哪里可以获得这样的列表?谢谢。

我尝试了 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/

相关文章:

python - 如何在 Google Colab 中处理来自 Google Drive 的视频

python - 在 Python 中将 unicode 表情符号转换为 ascii 表情符号

python - Linux中的设置方法

python - 如何动态匹配两个 pandas 数据帧中的行

python - 为什么 Django blocktrans 在一个地方工作而不是在另一个地方工作?

java - OpenNLP 解析器训练

nlp - 识别介词和个别词性

nlp - 两句话意思的距离

python - 如何将句子加载到Python gensim中?

python - 程序真的每次都创建了内部对象吗?