自然语言处理以识别数字数据

时间:2011-03-03 02:04:36

标签: java parsing nlp tokenize

我的要求是识别并从自然语言句子(仅英文)中提取数字数据以响应查询。平台是Java。例如,如果用户查询是“珠穆朗玛峰的高度是多少”,我们有一个段落:

  

1856年,英属印度的大三角测量建立了第一个公布的珠穆朗玛峰高度,当时称为Peak XV,高度为29,002英尺(8,840米)。 1865年,珠穆朗玛峰由英国皇家地理学会根据当时的印度英国测量师安德鲁·沃(Andrew Waugh)的推荐给予其官方英文名称,后者以他的前任和前任首席执行官乔治·珠穆朗玛爵爵士的名字命名。 4]几个世纪以来,Chomolungma一直被藏人普遍使用,但由于尼泊尔和西藏对外国人不对,Waugh无法提出一个确定的地方名称。 (从维基百科粘贴)

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

1 个答案:

答案 0 :(得分:3)

显然,做好这件事是非常困难的。如果这是一项任务,那么我猜测期望会有所降低。以下是一些希望让您入门的想法:

我将问题分成两部分;解析问题块然后传递答案块。从问题块中,您需要知道2条信息,您要搜索的名词以及答案的类型。在这种情况下,名词是珠穆朗玛峰,类型是高度。数据的“类型”可以构建字典,以便相当快速地搜索输入字符串(例如“高度”,“重量”,“距离”,“年龄”)。名词更难,所以我想假设问题中的每个非类型都是一个潜在名词,也许删除已知非名词的字典(例如“at”,“the”,“of”等)。

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

希望能让你开始。如上所述,这不是一个强大的商业解决方案。这是作业水平。