language-agnostic - 自动同义词检测方法

标签 language-agnostic machine-learning nlp artificial-intelligence neural-network

我目前正在研究一种基于神经网络的短文档分类方法,由于我正在使用的语料库通常在十个单词左右,因此标准统计文档分类方法的用途有限。因此,我正在尝试对训练中提供的匹配实现某种形式的自动同义词检测。更具体地说,我的问题是关于解决以下情况:

假设我有“涉及食物”的分类、“涉及领域”的分类和数据集如下:

"Eating Apples"(Food);"Eating Marbles"(Spheres); "Eating Oranges"(Food, Spheres);
"Throwing Baseballs(Spheres)";"Throwing Apples(Food)";"Throwing Balls(Spheres)";
"Spinning Apples"(Food);"Spinning Baseballs";

我正在寻找一种增量方法,可以实现以下联系:

Eating --> Food
Apples --> Food
Marbles --> Spheres
Oranges --> Food, Spheres
Throwing --> Spheres
Baseballs --> Spheres
Balls --> Spheres
Spinning --> Neutral
Involving --> Neutral

我确实意识到,在这种特定情况下,这些匹配可能有点可疑,但它说明了我遇到的问题。我的一般想法是,如果我增加一个与类别中的单词相对出现的单词,但在这种情况下,我最终会偶然将所有内容与“涉及”一词联系起来,然后我认为我会简单地减少出现在类别中的单词与多个同义词或非同义词结合使用,但这样我就会失去“吃”和“食物”之间的联系。有谁知道我如何组合一个算法,使我朝着上述方向前进?

最佳答案

有人向我解释了一种无监督的引导方法来做到这一点。

应用此方法有不同的方法和变体,但这里有一个简化的版本。

概念:

首先假设如果两个单词是同义词,那么在您的语料库中它们将出现在类似的设置中。 (吃葡萄、吃三明治等)

(在此变体中,我将使用同现作为设置)。

引导算法:

我们有两个列表,

  • 一个列表将包含与食品同时出现的单词
  • 一个列表将包含食品一词

监督部分

首先播种其中一个列表,例如,我可能会在食品列表上写下“Apple”一词。

现在让计算机接管。

无监督部分

它首先会找到语料库中出现在 Apple 之前的所有单词,并按照出现次数最多的顺序对它们进行排序。

取出前两个(或者您想要的任意多个)并将它们添加到与食物同时出现的列表中。例如,也许“吃”和“好吃”是前两个。

现在,通过对列表中每个单词右侧出现的单词进行排名,使用该列表来查找接下来的两个 HitTest 门的食物单词。

继续此过程扩展每个列表,直到您对结果感到满意为止。

完成后

(您可能需要手动从列表中删除一些明显错误的内容。)

变体

如果考虑到关键字的语法设置,此过程会非常有效。

Subj ate NounPhrase
NounPhrase are/is Moldy

The workers harvested the Apples. 
   subj       verb     Apples 

That might imply harvested is an important verb for distinguishing foods.

Then look for other occurrences of subj harvested nounPhrase

您可以扩展此过程以将单词移入类别,而不是在每个步骤中移动单个类别。

我的来源

几年前,犹他大学开发的一个系统使用了这种方法,该系统仅通过查看新闻文章就成功地编制了一份不错的武器词、受害者词和地点词列表。

一种有趣的方法,并且取得了良好的结果。

不是神经网络方法,而是一种有趣的方法。

编辑:

犹他大学的系统称为 AutoSlog-TS,可以看到关于它的简短幻灯片 here演示接近尾声时。以及有关它的论文的链接 here

关于language-agnostic - 自动同义词检测方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370247/

相关文章:

xml - 是否有正当理由将数据作为 XML 在内部保存?

algorithm - 我应该在 Huffman 树构建算法中为 DEFLATE 提供一致性检查吗?

bash - 如何从文档中删除重复的短语?

java - weka - 如何打印错误分类的实例

python - 在sklearn TfidfVectorizer中执行停用词去除过程时?

algorithm - 线性时间投票算法。我不明白

math - 计算两个运动球将碰撞的x/y点

python - 更新成本函数和 Theta 参数时的简单线性回归误差

python-3.x - OpenCV 分类器检测火车(铁路运输)

machine-learning - 使用 Neo4j 进行强化学习 : make 2 copies of the graph vs store 2 copies of all values on 1 graph