我正在编写一个解析电子邮件的Python脚本,该脚本涉及在电子邮件文本中搜索任何常见食品的单词。我需要一些方法来确定单词是否确实是食物。
我看过几个自然语言处理API(如AlchemyAPI和NLTK 2.0),它们似乎具有命名实体提取(这是我想要的),但我找不到特别的食物实体类型。
自然语言处理很可能对我需要的东西来说是矫枉过正的——我只想要一份我可以匹配的食物清单。我在哪里可以找到这样的单词列表?我是否需要编写自己的抓取工具才能从某些在线资源中解析它,或者有更简单的方法?
将所有食品放在一个列表中真的很好,但遗憾的是,这是理想的情况。
您可以尝试访问 WordNet 中的food
语法集。如果您使用的是 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()]))
AFAIK,NLTK或类似食物没有常见食物的实体。您很可能必须为自己构建一个列表。
但是,值得庆幸的是,互联网是你的朋友,这里有一些很好的来源可以开始,涵盖了英语世界中的许多常见蔬菜和水果:
- http://vegetablesfruitsgrains.com/list-of-vegetables/
- http://edis.ifas.ufl.edu/features/fruitvegindex.html
- http://www.enchantedlearning.com/wordlist/vegetables.shtml
祝你好运!
由于命名实体是专有名词(即人、地点、公司、位置等),因此 NLP 实体提取不太可能用于查找常见食物名称。可能有效的 NLP 函数是关键字提取。我通过AlchemyAPI的演示运行了一些食谱,这些成分被标识为关键字。因此,这可以让您完成其中的一部分,但是您仍然需要将关键字与常见食品列表进行比较,例如提到的jrd1。