有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从文本中提取语义/风格特征

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

我知道像GATENLTKRapid Miner Mallet MinorThird 这样的文本挖掘包很少。然而,我找不到任何适合我的任务的机制

问候,
--丹齐尔


共 (6) 个答案

  1. # 1 楼答案

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

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

  2. # 2 楼答案

    我认为斯坦福解析器是免费提供的最好、最全面的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结合两种真正强大的技术:斯坦福解析器+Hadoop,您可能会受益匪浅。两者都是纯用Java编写的,都有一个极其丰富的API,可以在一个计算机集群上用很短的时间解析大量数据。如果你没有这些机器,你可以使用亚马逊的EC2集群。如果你需要一个使用Stanford Parser+Hadoop的例子,请给我留言,我会用我的例子的URL更新帖子

  3. # 3 楼答案

    我在一些NLP(自然语言处理)任务中使用了NLTK,它运行得非常好(尽管有点慢)。你到底为什么想要文本的这种结构化表示?(真正的问题是,根据应用程序的不同,有时更简单的表示可能更好)

  4. # 5 楼答案

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