从tex中提取语义/文体特征

2024-10-01 13:37:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道开源工具(用于java/python)可以帮助我从文本中提取语义和风格特征。语义特征的例子有形容词-名词比率,词性标记的特定序列(形容词后接名词:adj | nn)等。文体特征的例子是独特单词的数量、代词的数量等。目前,我只知道Word to Web Tools 将文本块转换为基本的向量空间模型。在

我知道很少有文本挖掘包,比如GATENLTKRapid Miner Mallet 和{a6}。然而,我找不到任何适合我任务的机制。在

此致,
--登齐尔


Tags: 工具标记文本数量语义序列开源特征
3条回答

我使用Lucene的分析器和索引机制为文档构建向量空间,然后在这个空间中导航。您可以为文档构造词频向量,使用现有文档在向量空间中搜索其他similar文档。如果你的数据很大(数百万个文档,上万个特性),那么你可能会喜欢Lucene。你也可以做词干分析,词性标记和其他东西。这个blog post可能是POS标记的一个很好的起点。简而言之,Lucene为您提供了实现您提到的任务所需的所有机制。在

我经常听到的一个库是Semantic Vectors。它又是建立在Lucene上,但我没有直接的经验。除此之外,我建议看看维基百科的向量空间模型article。在

我认为Stanford解析器是免费提供的最好且全面的NLP工具之一:它不仅允许您解析结构依赖项(计算名词/形容词),还将为您提供句子中的语法依赖性(因此您可以提取主语、宾语等)。后一个组件是Python库还不能做的(参见Does NLTK have a tool for dependency parsing?),它可能是软件处理语义能力方面最重要的特性。在

如果您对Java和Python工具感兴趣,那么Jython可能是最有趣的工具。{我想在这个例子里,我会用同样的例子,在斯坦福写的,我会用同样的代码

编辑:读完你的一篇评论后,我知道你需要解析2900万个句子。我认为通过使用纯Java结合两种非常强大的技术:Stanford Parser+Hadoop,您将受益匪浅。它们都是纯Java编写的,有一个非常丰富的API,可以用来在一个机器集群上用很短的时间解析大量的数据。如果没有机器,可以使用Amazon的EC2集群。如果你需要一个使用stanfordparser+Hadoop的例子,请给我留言,我会用一个指向我示例的URL更新帖子。在

如果你的文本主要是自然语言(英语),你可以尝试使用词性(POS)标记来提取短语。Monty tagger是一个纯python POS tager。 我从C++ POS标签中得到了非常满意的性能,比如CRFTGGER ^ {A1}。我使用subprocess.Popen将其绑定到Python。POS标记允许您只保留句子的重要部分:例如,名词和动词,然后可以使用任何索引工具(如Lucene或Xapian)(我的最爱)对它们进行索引。在

相关问题 更多 >