自动同义词检测的方法

Sla*_*off 6 language-agnostic nlp artificial-intelligence machine-learning 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";
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种可以转向以下联系的增量方法:

Eating --> Food
Apples --> Food
Marbles --> Spheres
Oranges --> Food, Spheres
Throwing --> Spheres
Baseballs --> Spheres
Balls --> Spheres
Spinning --> Neutral
Involving --> Neutral
Run Code Online (Sandbox Code Playgroud)

我确实意识到在这种特殊情况下,这些可能是略微可疑的匹配,但它说明了我遇到的问题.我总的想法是,如果我增加了出现在一个类别词相反的词,但在这种情况下,我最终会顺带连接一切单词"涉及",我当时还以为我只是减少一个字出现在与多个同义词或非同义词结合,但我会失去"吃"和"食物"之间的联系.有没有人知道如何组合一个算法,让我按照上面指示的方向移动?

Xan*_*tix 12

有一种无需探索的引导捆绑方法,我已经解释过这样做.

有不同的方法来应用这种方法和变体,但这里是一个简化版本.

概念:

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

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

引导捆绑算法:

我们有两个清单,

  • 一个清单将包含与食品共同出现的字样
  • 一个列表将包含作为食品的单词

监督部分

首先播种其中一个列表,例如我可能会在食物清单上写下Apple这个词.

现在让计算机接管.

未经过冲击的零件

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

取两个(或者你想要的多个)并将它们添加到与食物项目列表同时出现的位置.例如,也许"吃"和"美味"是前两名.

现在使用该列表通过对列表中每个单词右侧显示的单词进行排名来查找接下来的两个顶级食物单词.

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

一旦完成

(你可能需要手动从列表中删除一些明显错误的东西.)

变种

如果考虑关键字的语法设置,此过程可以非常有效.

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
Run Code Online (Sandbox Code Playgroud)

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

我的来源

这种方法是在犹他州大学开发了几年前一个系统,它是成功的通过看新闻报道编译的武器的话,受害者的话,放话体面的名单中.

一个有趣的方法,并取得了良好的效果.

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

编辑:

该系统在美国犹他州大学被称为AutoSlog-TS,以及关于它的短暂的滑行可以看出这里对演示结束.和它链接到一个文件在这里