2012-06-07 38 views
2

我是一名正在NLP暑期项目中工作的学生。我对这个领域相当陌生,所以我很抱歉如果有一个非常明显的解决方案。这个项目是用C语言编写的,这是因为我对它的熟悉程度以及项目的计算密集性(我的语料库是维基百科的明文转储)。用于简单POS标记的NLP库

我正在研究一种关系提取方法,利用一致性原则试图学习(在某个错误阈值内)一组规则,规定哪些语法对象的集合暗示这些对象之间的连接。

该算法的第一步之一涉及找到给定单词可以引用的所有可能语法对象的集合(POS消歧在后面的步骤中由该算法隐式完成)。我已经看过几个解析器,但它们似乎都自己做了消歧步骤,这从我的结尾来看是适得其反的。我正在寻找一些现成的东西(理想情况下)给我一种单一命令的方式来提供这些信息。

这样的事情是否存在?如果没有,是否有一个存在的字典包含这种信息,这是微不足道的机器可解析的?

谢谢你的帮助。

+1

因此,您想将自己的pos tagger作为联合pos标记和其他任务的一部分,而不是使用现有的pos tagger甚至现有的分析器作为关系提取系统的输入?为什么一次重新发明每一个轮子?为什么不尝试通过例如关系提取任务应用你的方法来重新排列一个现有的关系提取器,或者从best-k依赖关系解析开始,然后才能修复下面的部分或者进行联合推理? –

+0

这实际上可能更难。使用我使用的算法,原则上,您应该基本上免费使用POS标记,作为其他一些流程的副作用。 我会直接和你在一起:我真的不知道我在做什么。几个星期前,在深夜阅读了一本关于信息论的书后,算法在我的梦中几乎找到了我。我对获得正常运行的解析器不感兴趣,而不是看看算法是否实际执行高于机会级别。为此,实现一个快速和肮脏(<5k)版本的算法似乎是一个不错的选择。 – user1441382

回答

0

看看CMU狮身人面像。一个开源的NLP项目。我认为它是用C++编写的,但是你可以整合它,或者至少可以理解如何去做事情。

+0

谢谢,我会检查出来。 – user1441382

0

如果你觉得自己很活跃,那么将外部POS tagger作为shell脚本调用或者将它封装到http服务中呢?

Java和Python拥有绝大多数的NLP库,所以利用它是有道理的。如果您可以在脚本中使用NLTK来标记内容,请从C中调用此脚本,这使得它更容易。