如何使用WordNet或与wordnet相关实现基于类别的文本标记?

如何使用wordnet的类别(java作为接口)使用wordnet标记文本?

考虑句子:

1)计算机需要键盘,监视器,CPU才能工作。
2)汽车使用齿轮和离合器。

现在我的目标是,例句必须被标记为

  • 第一句话

电脑/电子
键盘/电子
CPU /电子

  • 第二句话

汽车/机械
齿轮/机械
离合/机械
一些额外的例子……

“使用微芯片监控离合器和齿轮” – >离合器/机械,齿轮/机械,微芯片/电子

“此处用于监测氢气水平的软件” – >软件/计算机,氢/化学..

我想在java上实现上面提到的目标,即通过技术,机械,电气等相关类别来标记名词。

如何使用wordnet执行此操作。

我以前的作品

为了实现我的目标,我在每个类别的文本文件中创建了一个术语索引,并将其与标题匹配..如果它在文本文件中包含一个单词,则标题将被分类。

例如

Automobile.txtcar , gear , wheel , clutch
networking.txtserver,IP Address,TCP , RIP

这是算法:

 String Classify (String title) { String area; if (compareWordsFrom ("Automobile.txt",title) == true ) area = "Auto"; if (compareWordsFrom ("Netoworking.txt",title) == true ) area = "Networking"; if (compareWordsFrom ("metels.txt",title) == true ) area = "Metallurgy"; return area; } 

很难找到建立索引的相关词汇。 也就是说,现场汽车有1000个难以找到的相关术语。

确切地说,手动构建术语索引是一个令人心碎的过程

我已经使用过Stanford NLP,Open NLP,但他们正在标记POS,但不满足需要的东西。

我的需要
我需要一种自动化的工作方式。 自然语言处理技术能够做到这一点。 ?

有人建议使用wordnet库,但我怎么能用它,因为它就像字典,但我想要…

mechanical = {gear,turbine,engine ….)electronic = {microchip,RAM,ROM,…)

有没有像上面提到的结构中可用的单词数据库..

或者我有一个现成的图书馆?

您需要将一堆名词(例如“汽车”,“齿轮”)分类为预定义的类别(例如“汽车”)。 尽管命名实体识别是完成此任务的正确方法,但它有其问题,主要是收集足够的注释数据以便正确地训练系统。

WordNet可以通过建立名词之间的语义相似性来帮助您,从而帮助您根据相似性得分选择类别。 有几种方法可以建立相似性得分。 一些突出的是

  • 林的信息理论定义相似性
  • LESK ,基于术语词典定义重叠程度的分数。
  • Wu&Palmer的得分基于synset-depths

基本思想是类似的术语按照本体(如WordNet)分类在相似的类别下。 因此,如果它们密切相关,则它们在本体的类别树中的类别之间的距离将更短,否则更长。 也许最简单的这样的得分是路径得分:

 PathScore(s1, s2) = 1/pathLength(s1, s2) 

其中pathLength是上述类别树中路径的长度。

为了显示:

 PathScore(*car*, *automobile*) = 1.0; // path score is always between 0 and 1 WuPalmerScore(*car*, *automobile*) = 1.0; // Wu & Palmer's score is always between 0 and 1 PathScore(*engine*, *automobile*) = 0.25; WuPalmerScore(*engine*, *automobile*) = 0.88; PathScore(*microprocessor*, *automobile*) = 0.09; WuPalmerScore(*microprocessor*, *automobile*) = 0.58; 

因此,正如您所看到的,您在同一类别中所需的术语通常具有更高的相似性得分。 执行此操作的最佳库是WordNet Similarity for Java ,它提供了几个相似度量标准供您进行试验。 他们也在这里有一个在线演示 。

如果你试图标记专有名词,那么Caveat WordNet将无法正常运行。 例如,如果您希望现代汽车属于汽车类别而三星属于电子类,那么这根本无济于事……仅仅因为WordNet没有对这些名词进行分类。 在WordNet上构建的其他本体可以在这种情况下帮助您:

  • 其中一个众所周知的本体是Yago
  • 使用维基百科类别是另一种成功的方法。