我想知道开源工具( java/python),它们可以帮助我从文本中提取语义和风格特征。语义特征的示例将是形容词-名词比率、特定的词性标签序列(形容词后面跟着名词: adj|nn)等。风格特征的示例将是唯一单词的数量、代词的数量等。目前,我只知道Word to Web Tools 将文本块转换为基本的向量空间模型。
我知道像GATE、NLTK、Rapid Miner、 Mallet 和 MinorThird 这样的文本挖掘包很少。然而,我找不到任何适合我的任务的机制。
致以敬意,
--丹齐尔
发布于 2010-07-17 15:04:51
我认为斯坦福解析器是免费提供的最好的和全面的自然语言处理工具之一:它不仅可以让你解析结构依赖(计算名词/形容词),还可以给你句子中的语法依赖(这样你就可以提取主语、宾语等)。后一个组件是Python库还不能做的(参见Does NLTK have a tool for dependency parsing?),并且可能是关于软件处理语义的能力的最重要的特性。
如果您对Java和Python工具感兴趣,那么使用Jython可能是最有趣的。我也处于同样的境地,所以我写了一篇关于使用Jython运行Stanford解析器中提供的示例代码的文章--我会看一眼,看看你会怎么想:http://blog.gnucom.cc/2010/using-the-stanford-parser-with-jython/
编辑:在读了你的一条评论后,我了解到你需要分析2900万个句子。我认为,使用纯Java组合两种真正强大的技术: Stanford Parser + Hadoop,您会从中受益良多。两者都是纯粹用Java编写的,并且都有一个非常丰富的API,您可以使用它在一群机器上的极短时间内解析大量数据。如果你没有这些机器,你可以使用亚马逊的EC2集群。如果您需要使用Stanford Parser + Hadoop的示例,请给我留言,我将使用我的示例的URL更新帖子。
发布于 2010-07-17 14:47:13
如果您的文本主要是自然语言(英语),您可以尝试使用词性(POS)标记器提取短语。Monty标记器是一个纯python POS标记器。我已经从CRFTagger http://sourceforge.net/projects/crftagger/这样的C++ CRFTagger中获得了非常令人满意的性能。我使用subprocess.Popen将其绑定到Python。POS标签允许您仅保留句子的重要部分:例如,名词和动词,然后可以使用任何索引工具(如Lucene或Xapian (我最喜欢的))对其进行索引。
发布于 2010-06-29 17:06:05
我使用Lucene的分析器和索引机制为文档构建向量空间,然后在这个空间中导航。你可以为文档构建词频向量,使用现有的文档在向量空间中搜索其他similar文档。如果你的数据很大(数百万个文档,数万个特征),那么你可以喜欢Lucene。你也可以做词干分析,pos标记和其他事情。这个blog post可能是一个很好的起点。简而言之,Lucene为你提供了所有必要的机制来实现你提到的任务。
我经常听到的一个库是Semantic Vectors。它也是基于Lucene构建的,但我对它没有直接的经验。除此之外,我建议看看维基百科的向量空间模型article。
https://stackoverflow.com/questions/3109773
复制相似问题