java - 识别数字数据的自然语言处理

标签 java parsing nlp tokenize

我的要求是从自然语言句子(仅限英语)中识别和提取数字数据以响应查询。平台是Java。例如,如果用户查询是“What is the height of mount Everest”,我们有一段如下:

In 1856, the Great Trigonometric Survey of British India established the first published height of Everest, then known as Peak XV, at 29,002 ft (8,840 m). In 1865, Everest was given its official English name by the Royal Geographical Society upon recommendation of Andrew Waugh, the British Surveyor General of India at the time, who named it after his predecessor in the post, and former chief, Sir George Everest.[4] Chomolungma had been in common use by Tibetans for centuries, but Waugh was unable to propose an established local name because Nepal and Tibet were closed to foreigners. (Pasted from wikipedia)

对于段落中的用户查询“珠穆朗玛峰高度”,我需要得到 29002 英尺或 8840 米作为答案。任何人都可以建议在 Java 中执行此操作的任何可能方法吗?是否有相同的开源库?

最佳答案

显然,要做到这一点非常困难。如果这是一项任务,那么我猜期望值会低一些。以下是一些希望能帮助您入门的想法:

我将问题分为两部分;解析问题 block ,然后传递答案 block 。从题 block 中,你需要知道2条信息,你要搜索的名词,还有答案的类型。在这种情况下,名词是 Everest,类型是高度。您可以构建字典以快速搜索输入字符串的数据“类型”(例如“高度”、“体重”、“距离”、“年龄”)。名词更难,所以我想说假设问题中的每个非类型都是潜在名词,也许删除已知非名词的字典(例如“at”、“the”、“of”等)。

一旦您确定了问题中的名词和类型,您就可以开始扫描您的答案 block 。我首先将其分解成句子。然后扫描每个名词的每个句子。如果在该句子中找到一个,您需要再次扫描该句子以查找数字(考虑到可能的空格或逗号分隔)。最后,您需要“查看”您为测量类型找到的任何数字。因此,在这种情况下,我们从问题中解析出的“类型”是“高度”。您需要创建类型到测量的映射,因此“高度”将映射“km、ft、in、cm、m”等。如果数字周围有这些类型之一,则返回数字和测量类型作为答案。

希望这能让您入门。如上所述,这并不是一个强大的商业解决方案。这是家庭作业级别。

关于java - 识别数字数据的自然语言处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5175832/

相关文章:

java - 在 for 循环中创建多个 Google App Engine 实体

java - 当设备缓慢移动或静止时 GPS 会波动

java - 解析文本——Scanner 还是 BufferedReader?

python - 使用 spaCy 进行 POS 标记

使用 Hibernate、Quartz 和 JavaMail 的应用程序中的 Java OutOfMemory

java - NoClassDefFound 表示找不到该类?

Java 代码优化 - 如何优化这个 remove() 函数?

c++ - 如何使用 getline 和 stringstream 来解析格式化的日期和时间输入?

python - nltk StanfordNERTagger : How to get proper nouns without capitalization

python - 使用 Keras 进行文本分类