当前位置: 首页 > 知识库问答 >
问题:

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

袁琪
2023-03-14

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

示例

考虑以下句子:

1) 计算机需要键盘、显示器和CPU才能工作<汽车使用齿轮和离合器

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

  • 第一句

计算机/电子
键盘/电子
CPU/电子

>

汽车/机械
齿轮/机械
离合器/机械

“离合器和齿轮由微芯片监控”-

“用于监测氢含量的软件”-

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

如何使用wordnet做到这一点。

我以前的作品

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

例如

汽车。txt汽车、齿轮、车轮、离合器
联网。txt服务器、IP地址、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个相关术语,很难找到。

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

我已经使用了斯坦福NLP,开放NLP,但他们正在标记POS,但不满足需要。

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

有些人建议使用wordnet library,但我该如何使用它,因为它就像字典一样,但我想要像。。

机械设备{齿轮、涡轮、发动机……)电子设备{微芯片、RAM、ROM……)

有没有类似上述结构的word数据库。。

或者我有现成的图书馆吗?

共有1个答案

孔鸿远
2023-03-14

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

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

  • 林的信息论相似性定义

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

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

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

为了说明:

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,它提供了几个相似性度量供您进行实验。这里还有一个在线演示。

警告:如果你试图给专有名词加上标签,WordNet将不会表现得很好。例如,如果你想让现代进入汽车领域,让三星进入电子领域,这一点都没有帮助。。。只是因为WordNet没有对这些名词进行分类。在这种情况下,在WordNet之上构建的其他本体可能会帮助您:

  • Yago就是这样一个著名的本体论
 类似资料:
  • WordNet是一个英语词典,类似于传统的词库,NLTK包括英语WordNet。 我们可以使用它作为获取单词,用法示例和定义含义的参考。 类似单词的集合称为lemmas。 WordNet中的单词是有组织的,节点和边是节点表示单词文本,边表示单词之间的关系。 下面我们将看到我们如何使用WordNet模块。 所有的Lemmas from nltk.corpus import wordnet as wn

  • 问题内容: 我有一个项目,需要了解一个单词的词义。我正在考虑使用WordNet,因为它具有自己的词典编辑器类,也称为超级感官。我刚刚下载了MIT JWI,并尝试查看该JWI是否支持它。手册中没有任何关于返回单词附带的词汇信息的说明。 我设法运行了MIT提供的示例。关于如何获取使用MIT JWI或任何其他工具提交的单词的词法信息的任何线索或建议,都是很好的。有关如何调用该方法的示例也将不胜感激。 问

  • 问题内容: 我需要在基于Java的应用程序中使用Wordnet。我想要: 搜索同义词集 找到同义词集之间的相似性/相关性 我的应用程序使用RDF图,我知道Wordnet中有SPARQL端点,但是我想最好有一个数据集的本地副本,因为它不是太大。 我发现以下罐子: 通用库 -JAWS http://lyle.smu.edu/~tspell/jaws/index.html 通用库 -JWNL http:

  • 问题内容: 我想在python中使用wordnet lemmatizer,并且我了解到默认pos标记为NOUN,并且除非为pos标记明确指定为VERB,否则它不会为动词输出正确的引理。 我的问题是,为了准确地进行上述词素化,什么是最好的镜头? 我使用了pos标记,但是迷失了将树库pos标记集成到wordnet兼容pos标记中的信息。请帮忙 我得到了NN,JJ,VB,RB中的输出标签。如何将它们更改

  • 我想在python中使用wordnet lemmatizer,我了解到默认的pos标记是NOUN,并且它不会为动词输出正确的引理,除非pos标记明确指定为动词。 我的问题是什么是最好的镜头,以便准确地执行上述表达? 我使用做了pos标记,我迷失在将树库pos标记集成到wordnet兼容pos标记中。请帮助 我得到了NN、JJ、VB、RB中的输出标签。如何将这些更改为与wordnet兼容的标签? 我

  • 问题内容: 我正在编写一个POC来处理大约10亿行以上的超大文本文件,并为此进行了尝试。 但是,当运行此命令时,会出现此错误; 紧急:单个文件或套接字上的并发操作过多(最大1048575) 我还没有在网上找到任何可以解决此特定错误的信息。我不确定这是否是文件描述符问题,错误中列出的最大值远高于我的限制500,000。 做这个的最好方式是什么? 不太明显,它是我在处理数据时将调用的实际功能的替代品。