是否有用于Java中文本分析/挖掘的API? [关闭]
java
nlp
text-mining
5
0

我想知道是否有API可以在Java中进行文本分析。可以提取文本中所有单词,单独的单词,表达方式等的东西。可以通知找到的单词是数字,日期,年份,名称,货币等的东西。

我现在开始文本分析,所以我只需要一个API即可启动。我做了一个网络爬虫,现在我需要一些东西来分析下载的数据。需要一种方法来计算页面中的单词数,相似的单词,数据类型以及与文本相关的其他资源。

Java中是否有用于文本分析的API?

编辑:文本挖掘,我想挖掘文本。提供此功能的Java API。

参考资料:
Stack Overflow
收藏
评论
共 5 个回答
高赞 时间 活跃

如果您要处理大量数据,则Apache的Lucene可能会为您提供所需的帮助。

否则,仅创建自己的严重依赖标准Pattern类的Analyzer类可能是最容易的。这样,您可以控制将哪些文本视为单词,边界,数字,日期等。例如,20110723是日期还是数字?您可能需要实现多次分析算法,以更好地“理解”数据。

收藏
评论

我宁愿改用Lucene的Analysis和Stemmer类,也不愿重新发明轮子。他们涵盖了绝大多数案件。另请参见Additional和Contrib类。

收藏
评论

例如,您可以使用标准库java.text某些类,也可以使用StreamTokenizer (可以根据需要自定义它)。但是,正如您所知, 来自Internet的文本数据通常存在许多拼写错误,并且为了获得更好的性能,您必须使用诸如模糊令牌生成器之类的东西-java.text和其他标准工具在这种情况下功能太有限

因此,我建议您使用正则表达式 (java.util.regex)并根据需要创建自己的令牌生成器。

PS根据您的需要-您可以创建状态机解析器以识别原始文本中的模板化部分。您可能在下面的图片中看到简单的状态机识别器(您可以构造更高级的解析器,该解析器可以识别文本中复杂得多的模板)。

在此处输入图片说明

收藏
评论

我建议也看一下LingPipe 。如果您可以使用网络服务,那么本文对不同的API进行了很好的总结

收藏
评论

您似乎正在寻找具名实体识别器

您有两种选择。

CRFClassifier从斯坦福大学自然语言处理组,是一个Java实现命名实体识别器。

GATE(文本工程通用体系结构) ,一种用于语言处理的开源套件。查看针对开发人员的页面截图: http : //gate.ac.uk/family/developer.html 。它应该给您一个简短的想法,这可以做什么。 视频教程可让您更好地概述该软件所提供的功能。

您可能需要自定义其中之一以满足您的需求。

您还有其他选择:


关于CRFClassifier的培训,您可以在其常见问题解答中找到简要说明

...训练数据应在制表符分隔的列中,然后通过地图定义这些列的含义。其中一列应称为“答案”,并具有NER类,并且现有功能会知道诸如“单词”和“标签”之类的名称。您可以定义数据文件,地图以及通过属性文件生成的要素。 NERFeatureFactory的Javadoc中有大量文档记录了不同属性生成的功能,尽管最终您必须转到源代码才能回答一些问题...

您还可以在CRFClassifierjavadoc中找到一个代码片段:

典型的命令行用法

要在文本文件上运行带有提供的序列化分类器的训练模型,请执行以下操作:

java -mx500m edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier conll.ner.gz -textFile samplesentences.txt

在属性文件(训练,测试或运行时)中指定所有参数时:

java -mx1g edu.stanford.nlp.ie.crf.CRFClassifier -prop propFile

要从命令行训练和测试简单的NER模型:

java -mx1000m edu.stanford.nlp.ie.crf.CRFClassifier -trainFile trainFile -testFile testFile -macro > output

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号