我想知道开源工具(用于java / python),它可以帮助我提取语义和语义。文本的风格特征。语义特征的例子是形容词 - 名词比率,词性标签的特定序列(形容词后跟名词:adj | nn)等。风格特征的例子是独特词的数量,代词的数量等。目前,我只知道Word to Web Tools 将文本块转换为基本向量空间模型。
我知道很少的文字挖掘软件包,例如GATE,NLTK,Rapid Miner, Mallet 和 MinorThird 。但是,我找不到适合我任务的机制。
问候,
- 丹尼尔
答案 0 :(得分:3)
我认为Stanford Parser是免费提供的最好和最全面的NLP工具之一:它不仅可以让您解析结构依赖(计算名词/形容词),但它会还会在句子中为您提供语法依赖(这样您就可以提取主语,对象等)。后一个组件是Python库根本无法做到的(参见Does NLTK have a tool for dependency parsing?),并且可能是您的软件使用语义的能力最重要的特性。
如果您对Java和Python工具感兴趣,那么Jython可能是最有趣的。我在同一条船上,所以我写了这篇关于使用Jython来运行斯坦福分析器中提供的示例代码的帖子 - 我会瞥一眼看看你的想法:http://blog.gnucom.cc/2010/using-the-stanford-parser-with-jython/
编辑:在阅读了您的一条评论后,我了解到您需要解析2900万条句子。我认为使用纯Java结合两种非常强大的技术可以大大受益:Stanford Parser + Hadoop。两者都是纯粹用Java编写的,并且具有非常丰富的API,您可以使用它在一小部分计算机上解析大量数据。如果您没有这些机器,则可以使用Amazon的EC2群集。如果你需要一个使用Stanford Parser + Hadoop的例子给我发表评论,我将用我的例子的URL更新帖子。
答案 1 :(得分:2)
如果您的文字主要是自然语言(英文),您尝试使用词性(POS)标记器提取短语。 Monty tagger是纯粹的python POS标记器。
我用C ++ POS标记器获得了非常令人满意的性能,例如CRFTagger http://sourceforge.net/projects/crftagger/。我使用subprocess.Popen
将其绑定到Python。 POS标签允许您仅保留句子的重要部分:例如,名词和动词,然后可以使用任何索引工具(如Lucene或Xapian(我最喜欢的))对其进行索引。
答案 2 :(得分:1)
我使用Lucene的分析器和索引机制为文档构建向量空间,然后在此空间中导航。您可以为文档构造术语频率向量,使用现有文档搜索向量空间中的其他similar文档。如果您的数据很大(数百万个文档,数万个功能),那么您可以选择Lucene。你也可以做词干,pos标记和其他东西。这个blog post可能是POS标记的一个很好的起点。简而言之,Lucene为您提供了实施您提到的任务所需的所有机制。
我经常听到的一个图书馆是Semantic Vectors。它再次建立在Lucene上,但我对这个没有直接经验。除此之外,我建议看一下维基百科的矢量空间模型article。
答案 3 :(得分:1)
我使用NLTK进行一些NLP(自然语言处理)任务,它运行得非常好(虽然有点慢)。为什么你想要这样一个结构化的文本表示? (真正的问题,因为取决于应用程序,有时更简单的表示可能更好)
答案 4 :(得分:1)
以下是Java NLP工具的汇编,这些工具是合理的最新版本: http://www.searchenginecaffe.com/2007/03/java-open-source-text-mining-and.html
LingPipe(http://alias-i.com/lingpipe/)尚未在答案中提及,并且是一个优秀的&积极开发的工具包。
答案 5 :(得分:0)