Java中是否有用于文本分析/挖掘的API?[已关闭]

2022-09-01 18:38:35

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

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

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

编辑:文本挖掘,我想挖掘文本。一个用于 Java 的 API,它提供了这一点。


答案 1

看起来你正在寻找一个命名实体识别器

你有几个选择。

来自斯坦福自然语言处理组的CRFClassifier是命名实体识别器的Java实现。

GATE(文本工程的通用架构),一个用于语言处理的开源套件。看看开发人员页面上的屏幕截图:http://gate.ac.uk/family/developer.html。它应该让您简要了解这可以做什么。视频教程可让您更好地了解该软件所提供的功能。

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

您还有其他选择:


在CRFClassifier的培训方面,您可以在他们的FAQ中找到简要说明

...训练数据应位于制表符分隔的列中,并通过映射定义这些列的含义。一列应该称为“answer”并具有NER类,并且现有功能知道“word”和“tag”等名称。您可以定义数据文件、地图以及要通过属性文件生成的要素。关于NERFeatureFactory的Javadoc中不同属性生成的功能有相当多的文档,尽管最终您必须转到源代码来回答一些问题...

您还可以在 CRFClassifier 的 javadoc 上找到一个代码片段:

典型的命令行用法

要在文本文件上使用提供的序列化分类器运行经过训练的模型:

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


答案 2

例如 - 您可以使用标准库中的某些类,也可以使用(您可以根据需要自定义它)。但如您所知 - 来自互联网源的文本数据通常有许多正字法错误,为了获得更好的性能,您必须使用模糊分词器之类的东西 - java.text和其他标准实用程序在此类上下文中的功能太有限。java.textStreamTokenizer

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

附言根据您的需要 - 您可以创建状态机解析器来识别原始文本中的模板化部分。您可能会在下图中看到简单的状态机识别器(您可以构建更高级的解析器,它可以识别文本中更复杂的模板)。

enter image description here


推荐