NLP ::从Python中的字符串中提取实体及其值

时间:2017-09-14 14:52:34

标签: python-2.7 parsing nlp key-value string-parsing

我有一些水果名单的清单/字典如下:

fruits = ["Banana","Apples","Oranges"]

这只是一个示例列表,其中可以有更多的成果。 我的输入文字如下所示:

text1 = " I want to 2 Apples and 3 Bananas"
text2 = " I need Apples 2, Bananas 5"
text3 = "want to have 1 orange"

我想要注意的是,我的输入字符串是一个自由流动的文本,因此不会遵循任何特定格式

问题:我想解析字符串并获取一个表/列表,其中包含我所拥有的水果数量。数量可以在水果之前或之后。下面可以看作是输入的输出" text1 "我想要:

Apple   2

Banana  3

我在各种链接中都经历了类似的问题陈述,但是输入字符串有某种格式,而我的问题并没有。 我所经历的一些链接是:

python: extracting variables from string templates

How to extract variable name and value from string in python

extracting key value pairs from a string containing escaped characters

get python dictionary from string containing key value pairs

2 个答案:

答案 0 :(得分:0)

如果数据完全是非结构化的,而是句子,则可能必须使用nlp路由。但是如果你可以做一些基本的假设,你可以尝试绕过它。

例如:

1)每个水果都有数量吗?

2)你能在字符串中加入其他乱码吗?

Example: 1 4 5 Apple 1

如果您可以执行基本规则,例如一个水果附带一个数字,并且该数字是最接近的数字(之前或之后),那么您可以提取数字和水果的位置,然后从左侧开始采用最接近的数字。 / p>

text1 = " I want to 2 Apples and 3 Bananas" -> [2, Apple, 3, Banana]

text2 = " I need Apples 2, Bananas 5" -> [Apple, 2, Banana, 5]

text3 = "want to have 1 orange" -> [1, Orange]

答案 1 :(得分:0)

请参见here。 在这里,此问题可以通过大量使用正则表达式解决。

看看test文件,它使您可以了解它可以解析哪种句子。

例如,这段代码可以从给定的文本中提取项目的名称和数量,例如:

I want to buy 2 kg tomato and 1 kg potato.
Also add 500 gms ginger.