3
I love to eat chicken.
Today I went running, swimming and played basketball.

我的目标是仅通过分析这两个句子来返回FOODSPORTS 。你怎么能那样做?

我熟悉 NLP 和 Wordnet。但是有没有更高级/实用/现代的技术?

有没有什么东西可以自动为你分类单词,分成“级别”?

更重要的是,这个过程的技术术语是什么?

4

5 回答 5

4

这个问题很难从程序上解决,但最近在该领域取得了很大进展。

大多数自然语言处理都是从语法开始的(可能是也可能不是上下文无关的)。它是一组构造规则,说明了更一般的事物是如何由更具体的事物组成的。

上下文无关语法示例:

Sentence ::= NounPhrase VerbPhrase
NounPhrase ::= ["The"] [Adjective] Noun
Adjective ::= "big" | "small" | "red" | "green"
Noun ::= "cat" | "man" | "house"
VerbPhrase ::= "fell over"

这显然过于简单化了,但是制定完整的语法来定义所有英语的任务是巨大的,并且大多数实际系统只定义了适用于问题域的一部分子集。

一旦定义了语法(或使用只有 Google 之类的公司才知道的复杂算法学习),就会根据语法解析称为“示例”的字符串。它用词性标记每个单词。非常复杂的语法不仅包含您在学校学到的词性,还包含诸如“网站”“老人姓名”和“成分”之类的类别。

这些类别可以由人类费力地构建到语法中,也可以使用类比建模或支持向量机之类的东西来推断。在每一个中,诸如“鸡”、“足球”、“烧烤”和“板球”之类的东西将被定义为一个非常高维空间中的点,以及数百万个其他点,然后聚类算法将定义组基于这些点相对于彼此的位置。然后可能会尝试从示例文本中推断组的名称。

链接文本 这个 Google 搜索列出了 NLP 中使用的几种技术,你可以从中学到很多东西。

编辑只是为了解决这个问题,人们可能会在网上抓取“ _是一个_ ”形式的句子,以建立一个项目-类别关系的数据库。然后你像上面一样解析一个字符串,并在数据库中查找已知项目的单词

于 2009-11-08T16:11:20.480 回答
3

您提出的问题是一个称为主题文本分类的整个研究领域。Fabrizio Sebastiani 的 ACM Computing Surveys 中的“自动文本分类中的机器学习”是对技术的一个很好的概述。. 最简单的技术之一(尽管不一定是性能最好的)是在每个类别中拥有大量(数百个)句子示例,然后在这些示例句子上训练一个朴素贝叶斯分类器。NLTK 在模块中包含一个朴素贝叶斯分类器nltk.classify.naivebayes

于 2009-11-12T21:04:55.960 回答
2

Google Sets做了一些这样的事情,并且有一些讨论提到了超集。但是,我还没有真正看到那里的任何技术细节,只是想法和讨论。

也许这至少可以帮助你的研究......

于 2009-11-08T09:33:49.590 回答
0

你可以看看来自 FBK 的人的WordNet Domains资源。它是 WordNet 的扩展,旨在用于文本分类和词义消歧。它允许不同程度的粒度。

http://wndomains.fbk.eu/

将其应用于您的任务的一种可能方法可能是从您的句子中取出 NP 块,获取它们的中心词并从中获取来自 WordNet 域的类别。

于 2009-11-14T12:53:21.067 回答
0

Tenqyu使用 Python 和机器学习解决了这个问题。

  1. 有一个文本数据集
  2. 应用 Tf-idf 矢量化。
    文档中出现的术语的权重与术语频率成正比。(The Luhn Assumption 1957) 术语的特殊性可以量化为它出现的文档数量的反函数。
  3. 向量空间模型
  4. 多项本机贝叶斯分类

更详细的过程在这里: https ://hackernoon.com/how-to-better-classify-coachella-with-machine-learning-part-1-dc84c53d1a9c

于 2017-10-08T06:18:49.473 回答