从免费文本中提取杂货清单

时间:2016-07-17 08:39:56

标签: python nlp nltk

我正在寻找一个python库/算法/纸张来提取免费文本的杂货列表。

例如:

  

"一份沙拉和两份啤酒"

应转换为:

{'salad':1, 'beer': 2}

2 个答案:

答案 0 :(得分:3)

In [1]: from word2number import w2n
In [2]: print w2n.word_to_num("One")
1
In [3]: print w2n.word_to_num("Two")
2
In [4]: print w2n.word_to_num("Thirty five")
35

您可以使用此软件包以及您可以根据需要实现的其他内容转换为数字。

安装此软件包。

pip install word2number

<强>更新

你可以这样实现。

from word2number import w2n
result = {}
input = "One salad and two beers"
b = input.split()
for i in b:
    if type(w2n.word_to_num(i)) is int:
        result[b[b.index(i)+1]] = w2n.word_to_num(i)

<强>结果

  

{'beers':2,'salad':1}

答案 1 :(得分:2)

我建议使用WordNet。您可以从java(JWNL库)等中调用它。以下是建议:对于每个单词,请检查它的上位词。对于高级层次结构顶层的食物,你会发现&#34;食物,营养素&#34;。这可能是你想要的。现在来测试一下,查询&#34; beer&#34;在Online版本中。单击&#34; S&#34;,然后单击&#34;继承的hypernym&#34;。您将在层次结构中的某处找到它:

....
    S: (n) beverage, drink, drinkable, potable (any liquid suitable for drinking) "may I take your beverage order?"
        S: (n) food, nutrient (any substance that can be metabolized by an animal to give energy and build tissue) 
          ....

您可以使用您选择的编程语言等来遍历此层次结构。一旦您标记了所有食物,那么您可以捕获数字,即2&#34; 2啤酒&#34;,并且您拥有所有您需要的信息。请注意,捕获数字本身可以是下降编码任务!希望它有所帮助!