使用Visual C#从文本文件语料库中提取名词、名词短语、形容词和动词

3
我正在做一个项目,需要从文本文件(.doc)中提取名词、形容词、名词短语和动词。我有大约75个这样的文件。我在网络上查找相关信息时发现了使用Python中的nltk进行POS标记。由于我的项目是使用Visual Studio 2008中的C#编写的,因此我需要一段代码来完成这项任务。我尝试过使用WordNet API和SharpNLP,但由于我是新手,所以发现它们很难与我的项目集成。请问是否有更简单的代码可以使用类似词汇表等方式来实现?谢谢。

这是一个完整的研究领域。不确定是否有易于使用的C#库。在线资源的示例(我认为是开源的)可在http://barbar.cs.lth.se: 8081/找到,更多信息可在http://code.google.com/p/mate-tools/找到。然而,这并不是用C#完成的,但可以提供一些思路。 - Mikael
我几年前在学校项目中使用了你提到的SharpNLP。我记得它的表现非常好,所以我一定推荐你去试试。如果你是自然语言处理方面的新手,你需要花些时间来理解解析树等概念。http://www.codeproject.com/KB/recipes/englishparsing.aspx - Ozzy
@Ozzy 我认为 OP 不用担心解析,标记通常在解析之前(在分词之后),所以如果他只需要词性标注,他永远不必担心它。 - Chris Pfohl
3个回答

3

我曾在一家行业领先的公司从事自然语言处理(NLP)工作,你想做的并不是一项简单的任务。我认识nltk的其中一位创建者,并且我自己也使用过它;这是一个高质量的开源工具,我建议你使用它(你有特别引人注目的原因要使用C#吗?)

通常通过对手动注释的数据进行语言模型的训练来实现POS标记,然后将该模型应用于新文本,预测词性并给出置信度。 nltk 有些工具可以做到这一点,他们还有一些模型(如果我没记错的话)。

你会发现大多数工具都是用C++、Java和Python编写的。如果你不懂这些语言,那么看这个作为一个学习的好机会!

有关更多信息和其他可用于此类标记的软件,请参见Wikipedia,特别是底部的链接。


2
Christopher 在他的陈述中正确指出,NLP 实现并不容易。然而,我最近研究了一种可行的解决方案,使用 OpenNLP 在 .NET 项目中带有一个基本的 PoS 解析器。在我的例子中,我正在寻找名词短语,但是找到其他片段也不应该太困难。我发现 1.5 版的 OpenNLP 工具模型 对我的目的来说足够了。
我意识到这个答案对于提问者来说已经太晚了,但是希望它能给其他人在这个困难的领域获得一些灵感。 使用 OpenNLP 在 .NET 中提取具有上下文相关性的名词短语

0

请仔细阅读本文。

将SharpNLP与C# Visual Studio项目轻松集成的方法

在本文中,我提供了一种逐步将SharpNLP与C#项目集成的方式,并提供了样例代码片段来特别解决您遇到的问题,如句子拆分、标记化和POSTagging。

试试这个方法,如果您遇到任何问题,我将能够帮助您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接