分别使用NLP和Ontology自动标记和分类文本

时间:2013-04-29 09:06:15

标签: nlp ontology owl dotnetrdf

我正在开发一个项目,用户在其中将一些文本添加到数据库中,而保存时也会为他/她的条目添加标签,以便其他人可以使用这些标签进行搜索。

实施例

撰文:“下一场F1赛事在西班牙举行”

标签:“一级方程式”,“种族”,西班牙“

如果任何用户搜索这些标签,将在结果中获得此条目。

但是我希望搜索“体育”或“汽车运动”或“欧洲”的用户也应该获得此条目,尽管这些标签未明确标记到条目中,但是因为“公式1”是类型的“运动”是一种“运动”,“西班牙”在“欧洲”。

在我的提交表单上,用户将文本写在一个文本框中,然后将其标记写入下面的第二个文本框,然后提交。

稍后这些标签将由管理员手动分类。因此,在上述情况下,管理员将手动将“Spain”作为“Europe”的子元素。 (MS SQL Server层次结构列)

我认为这可以使用一些Ontologies软件来实现。 dotNetRdf,OWL ......但我不确定。几天前我才知道这个世界的这一面,我不确定这些可以帮助我。这是解决方案,还是我正在调查完全错误的事情?有什么建议可以实现上述目标吗?

此外,在进行分类之前,我想自动从文本中选择标签,并将标签填入下方文本框。

为此,我想我将不得不使用一些NLP服务?任何想要使用的想法或任何其他建议?

2 个答案:

答案 0 :(得分:0)

如果您正在寻找的关系足够普遍(即国家和大陆),本体可能会有所帮助。对于语义相关性“种族”与“体育”。我会建议您可以利用的单词(或标签)之间的某种语义相似性。

基本上,如果您生成MxM矩阵来建模不同标签之间的依赖关系/相似性,那么您可以使用这些权重来获得类似的概念。例如,“种族”和“体育”将比“种族”和“西班牙”更加相关。

如何计算重量?这可以通过几种技术来解决,例如[显式语义分析](http://en.wikipedia.org/wiki/Explicit_semantic_analysis)或[分布式语义](http://en.wikipedia.org/wiki/Distributional_semantics)技术。最简单的指标之一是使用一些共生度量标准(即文档“种族”和“体育”的百分比一起出现)。

此外,您还可以使用更多NLP技术,例如同义词。

您还可以将这些权重与本体关系结合起来。如果你知道西班牙是欧洲的一部分,你可以在一般矩阵中增加它们的重量。

对于标签的提取,您应该查看实体提取,nltk可能是一个很好的工具。

我希望这会有所帮助。

答案 1 :(得分:0)

在这种情况下,您使用的解决方案(MS SQL Server层次结构列)可以通过OWL本体(它是层次结构/分类法)来补充。我举一个例子说明它在你的情况下会是什么样子以及你能从中得到什么。

与体育相关的本体看起来像:

Class: Sport

Class: Formula_1
  SubClassOf: Motor_Sport

Class: Motor_Sport
  SubClassOf: Sport

然后在名为推理器的程序的帮助下,您可以询问以下查询: Sport更具体的内容是什么? (Sport)的子类

结果列表包含Motor_SportFormula_1。然后,您可以使用这些类来注释数据。

开始的好方法是查看Protégé OWL Tutorial

相关问题