【发布时间】:2009-12-28 03:27:16
【问题描述】:
我正在使用JAWS 访问WordNet。给定一个单词,有没有办法检测它是否是专有名词?看起来同义词集的词汇类别非常粗略。
为了澄清,这些词没有上下文 - 它们只是单独呈现。如果可以想象一个词可以用作普通名词,那么它是可以接受的。所以“mark”很好,因为虽然它可以是某人的名字,但它也可以指一个点。但是,“非洲”不是。
【问题讨论】:
我正在使用JAWS 访问WordNet。给定一个单词,有没有办法检测它是否是专有名词?看起来同义词集的词汇类别非常粗略。
为了澄清,这些词没有上下文 - 它们只是单独呈现。如果可以想象一个词可以用作普通名词,那么它是可以接受的。所以“mark”很好,因为虽然它可以是某人的名字,但它也可以指一个点。但是,“非洲”不是。
【问题讨论】:
很遗憾,您将无法从 WordNet 同义词集中可靠地确定专有名词信息。您正在寻找的是Named Entity Recognition。维基百科页面上有几个 Java 版本的链接。我个人会推荐Stanford NER 或LingPipe。
更新:
基于单词没有上下文的附加限制,您可以使用大写作为主要指标,然后仔细检查 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;
}
这样可以消除这样的误报:
如果你建造它......
如你希望......
哦罗密欧,罗密欧......
并且仍然只捕获
中的大写名词在Mark的Book中说...
你最近听过Roots或Who吗?
但仍然会给你误报
标记第一个实例...
预订他们,Danno。
因为他们可能是,但没有上下文你不知道。
如果你想变得非常棘手,你可以跟踪任何名词的上位词树,看看你是否达到了像“公司”或“国家”这样明显的词。然而,我上次使用 WordNet 时(4 年前),上位词/下位词关系不是很可靠或一致,这可能会导致很多假阴性(并且没有改善我上面提到的假阳性,因为这些完全上下文相关)。
【讨论】:
如果你使用 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
【讨论】:
让我跑从你身边。您可能需要运行更多关于英语的书籍,以深入了解一个事实,即无法脱离上下文确定单词的词性。
您可以做的最好的事情是测试排除...确定 WordNet 知道在给定的词性中没有任何用法。在某些情况下,您可能会发现 WordNet 中只列出了一个词性。例如,我知道“汽车”除了用作名词之外没有其他用法。
区分专有名词和普通名词更加困难。当然你可以使用启发式......一个不是句子的首词并且大写但不是全大写的名词可能是一个专有名词。
最终,区别在于语义而不是词法分析。我怀疑你会根据在 WordNet 中查找单词找到一个相当强大的解决方案。我认为您需要先进行自然语言语法解析,然后才能可靠地提取名词,更不用说检测散文中的正确名词了。
【讨论】:
这些信息似乎没有专门存储在 WordNet 中。但是,您可以查看名词 sysnet 的第一个词形式,看看它是否大写。不确定这是多么官方,但它似乎可以告诉fly不是专有名词而France是。
【讨论】: