如何将单词组成一个类别。 (NLP)

时间:2009-11-08 09:22:19

标签: python text nlp nltk

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

我的目标是通过分析这两句话来返回 FOOD SPORTS 。你怎么能这样做?

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

是否有任何可以自动将单词分类为“级别”的内容?

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

5 个答案:

答案 0 :(得分:4)

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

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

示例上下文无关语法:

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

这显然过于简单,但制定完整语法来定义所有英语的任务是巨大的,而且大多数真实系统只定义适用于问题域的某些子集。

一旦定义了语法,(或者使用只有Google等人知道的复杂算法学习),就会根据语法解析一个称为“范例”的字符串。用词性标记每个单词。一个非常复杂的语法不仅具有你在学校学到的词性,还有“网站”,“老人的名字”和“成分”等类别。

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

link text 这个谷歌搜索列出了NLP中使用的几种技术,你可以从中学到很多东西。

EDIT 为了解决这个问题,可以在网页上抓取“ _是_ ”形式的句子,以建立项目类别关系的数据库。然后解析上面的字符串,并查找数据库中已知项目的单词

答案 1 :(得分:2)

Google Sets执行了一些操作,并且有一些discussion提到了超集。但是,我还没有真正看到任何技术细节,只是想法和讨论。

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

答案 2 :(得分:2)

您提出的问题是一个称为主题文本分类的整个研究领域。 "Machine learning in automated text categorization" in ACM Computing Surveys, by Fabrizio Sebastiani.是对技术的一个很好的概述。最简单的技术之一(虽然不一定是最佳表现)是在每个类别中有大量(数百)个句子的例子,然后在那些样本句子上训练朴素贝叶斯分类器。 NLTK在模块nltk.classify.naivebayes中包含朴素贝叶斯分类器。

答案 3 :(得分:0)

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

http://wndomains.fbk.eu/

将其应用于您的任务的一种可能方法可能是从您的句子中获取NP块,获取他们的主要词语,并从中获取WordNet域中的类别。

答案 4 :(得分:0)

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

  1. 拥有文字数据集
  2. 应用Tf-idf矢量化。 在文档中出现的术语的权重仅仅是成比例的 到术语频率。 (Luhn Assumption 1957) 术语的特异性可以量化为反函数 发生的文件数量。
  3. 向量空间模型
  4. 多项原生贝叶斯分类
  5. 更详细的过程如下: https://hackernoon.com/how-to-better-classify-coachella-with-machine-learning-part-1-dc84c53d1a9c