用WordNet检测专有名词?

时间:2009-12-28 03:27:16

标签: java nlp wordnet

我正在使用JAWS访问WordNet。有一个词,有没有办法检测它是否是一个专有名词?看起来这些同义词具有相当粗略的词汇类别。

澄清一下,这些词语没有上下文 - 它们只是单独呈现。如果一个词可以想象地被用作普通名词,那么它是可以接受的。所以“标记”很好,因为虽然它可能是某人的名字,但它也可以指代一个点。但是,“非洲”不是。

4 个答案:

答案 0 :(得分:12)

不幸的是,您无法从WordNet同义词中可靠地确定正确的名词信息。你在寻找的是Named Entity Recognition。从维基百科页面可以找到Java中提供的多个版本的链接。我个人推荐Stanford NERLingPipe

<强>更新

根据没有上下文单词的附加约束,您可以使用大写作为主要指标,然后仔细检查WordNet以查看该单词是否可以用作名词。也许是这样的:

String word = "foo";
boolean isProperNoun = false;
if (Character.isUpperCase(word.charAt(0))) {
    WordNetDatabase database = WordNetDatabase.getFileInstance();
    Synset[] synsets = database.getSynsets(word, SynsetType.NOUN);
    isProperNoun = synsets.length > 0;
}

这将消除这样的误报:

  

如果你建立它...
  作为你希望...
  罗密欧,罗密欧......

仍然只是抓住

中的大写名词
  

标记图书中,它说...
  你最近听过 Roots Who 了吗?

但仍然在

上给你误报
  

标记第一个实例...
  预订'他们,Danno。

因为可以,但没有上下文你不知道。

如果你想变得非常棘手,你可以跟踪任何名词上的hypernym树,看看你是否达到了像'公司'或'国家'那样明显的东西。然而,上次我使用WordNet(4年前)时,上位词/下位词关系不是非常可靠或一致,这可能会导致很多假阴性(并且没有改善我上面提到的误报,因为它们完全是依赖于上下文)。

答案 1 :(得分:2)

让我运行这个过去你。你可能不得不通过更多关于英语的书来运行,以深入了解一个人无法在上下文中确定一个单词的词性的事实。

您可以做的最好的事情是测试排除...确定WordNet知道在给定的词性中没有使用。在某些情况下,您可能会发现WordNet中只列出了一个词性。例如,我知道除了作为名词之外没有使用“汽车”。

正确的名词与普通名词区分开来更加困难。当然你可以使用启发式...一个名词,它不是一个句子的最初单词并且是大写的,但不是在ALLCAPS中可能是一个专有名词。

最终,区别在于语义而不是词法分析。我怀疑你会找到一个基于在WordNet中查找单词的合理强大的解决方案。我认为在你能够可靠地提取名词之前你需要做自然语言语法分析,更不用说在散文中检测正确的名词。

答案 2 :(得分:2)

如果使用linux命令行来使用Wordnet,则可以使用'wn -synsn'来获取单词的所有同义词。专有名词将被大写。如,

$: wn mark -synsn

   Synonyms/Hypernyms (Ordered by Estimated Frequency) of noun mark
   15 senses of mark                                                       

   Sense 1
   mark, grade, score
         => evaluation, valuation, rating
   .
   .
   .
   Sense 8
   Mark, Saint Mark, St. Mark
         INSTANCE OF=> Apostle, Apostelic Father
         INSTANCE OF=> Evangelist
         INSTANCE OF=> saint

但是,严重的是,请不要仅依赖于Wordnet。有可能成为名词的专有名词Wordnet将不会向您提取任何信息。例如,尝试使用Henrik这个名称!

然而,您可以从Google n-gram语料库等数据集中 为您的单词 w 构建一个上下文 ,并使用此类上下文构建一个返回置信度分数的分类器(即分类器可以说 w 是一个专有名词,0 <= c <= 1置信度。)

答案 3 :(得分:1)

该信息似乎并未专门存储在WordNet中。但是,您可以查看名词sysnet的第一个单词形式,看它是否大写。不知道官方是多么正确,但似乎有效说明苍蝇不是一个专有名词而法国是。