9

我正在编写一个解析电子邮件的 Python 脚本,该脚本涉及在电子邮件文本中搜索任何常见食品的单词。我需要一些方法来确定单词是否确实是食物。

我查看了几个自然语言处理 API(例如 AlchemyAPI 和 NLTK 2.0),它们似乎具有命名实体提取(这是我想要的),但我找不到特别是食物的实体类型。

自然语言处理很可能对我需要的东西来说太过分了——我只想要一个我可以匹配的食物列表。我在哪里可以找到这样的单词表?我是否需要编写自己的刮板来从一些在线资源中解析它,还是有更简单的方法?

4

3 回答 3

8

将所有食物放在一个列表中会非常好,但遗憾的是这是理想的情况。

您可以尝试访问foodWordNet 中的同义词集。如果您使用的是 NLTK,请尝试:

>>> from nltk.corpus import wordnet as wn
>>> food = wn.synset('food.n.02')
>>> list(set([w for s in food.closure(lambda s:s.hyponyms()) for w in s.lemma_names()]))
于 2013-12-30T15:57:10.770 回答
1

由于命名实体是专有名词(即人、地点、公司、地点等),因此 NLP 实体提取不太可能用于查找常见的食物名称。可能起作用的 NLP 功能是关键字提取。我通过AlchemyAPI 的演示运行了一些食谱,并将成分标识为关键字。这样您就可以完成其中的一部分,但是您仍然需要将关键字与常见食品列表进行比较,例如提到的 jrd1。

于 2013-10-29T15:48:28.937 回答
1

AFAIK,没有用于 NLTK 或类似食品的普通食品实体。您很可能必须为自己构建一个列表。

但是,值得庆幸的是,互联网是你的朋友,这里有一些很好的来源,涵盖了英语世界中许多常见的蔬菜和水果:

祝你好运!

于 2013-10-28T03:39:35.063 回答