使用 WordNet 数据库确定词类型的算法

Algorithm for Determining Word Type using WordNet Database

我正在从事一个项目,该项目需要扫描英文自然文本的段落并检测它们是什么类型的词。该应用程序适用于 AJAX、PHP 和 MySQL。

我的应用程序不需要 100% 准确,只需尝试找到与文本输入匹配的最佳内容。为此,我使用了 WordNet 数据库的 SQL 版本,它允许我使用 dict 视图搜索单词及其类型。

SELECT lemma, pos FROM dict WHERE lemma = 'fool' ORDER BY lemma;

以上是数据库看到的示例,但我的 PHP 实际上是根据 AJAX 调用的文本创建动态绑定参数,实际上,将包含许多关键字。

这将 return 包含搜索的每个词及其类型的记录数组。

然而,我的问题是大多数单词都可以是多种类型,例如,对于 fool 示例,它返回三作为名词,四作为动词。我不需要细微差别,但我想知道这个词在用法中是名词还是动词。

大多数单词都存在这个问题,这意味着我无法准确检测不同类型的单词,因为它可能是任何用途。

我想知道是否有人可以指出算法的正确方向,或者我可以做些什么来至少最好地猜测单词类型是什么。

最重要的是形容词和名词。

您要完成的任务称为词性标记(正如评论中已经建议的那样),而 Wordnet 绝对不是执行此任务的工具。 在评论中还有一个 link 到一个非常简单的 PHP POS 方法。有许多用于 POS 的库。评论里的linked实现了Brill解析器,很简单,效果也不错。为了获得更好的性能,我建议使用有 PHP 接口的 Stanford NLP 工具,例如:https://github.com/agentile/PHP-Stanford-NLP

有几个相关的 SO 问题:

  • How to impliment a Part-of-Speech (POS) tagger

  • Pos Tagger in PHP