给出一句话:
我吃了花生酱果冻三明治和一杯咖啡
早餐
我想从中提取以下食物:
花生酱果冻三明治
咖啡
到目前为止,使用pos标记,我已经能够提取出各个食物项,即。
花生、黄油、果冻、三明治、咖啡
但就像我说的,我需要的是花生酱和果冻三明治,而不是单独的东西。
有没有什么方法可以做到这一点,而不需要在后台有一个食物的语料库或数据库?
最佳答案
你可以尝试不使用一个训练集,其中包含一个食物项目的语料库,但该方法也应该没有它的工作。
与其做简单的词性标记,不如做一个结合词性标记的依赖性分析。
这样就可以找到短语的多个标记之间的关系,并使用限制条件(如名词-名词依赖项)解析依赖树,这样就可以找到相关的块。
您可以使用spacy for dep parsing。下面是来自不悦的输出:
https://demos.explosion.ai/displacy/?text=peanut%20butter%20and%20jelly%20sandwich%20is%20delicious&model=en&cpu=1&cph=1
您可以在这里使用免费提供的数据,或其他更好的方式:
https://en.wikipedia.org/wiki/Lists_of_foods作为一个训练集
创建食物项的基本集(爬网树中的超链接)
基于对新数据的依赖性分析,您可以
丰富基础数据。例如:如果“黄油”存在于你的
“花生酱”是一种常见的
代币,然后'花生'和'花生酱'也被添加到
语料库。
语料库可以保存在一个可以装入内存的文件中
处理或数据库时,如redis,aerospeck等。
确保使用标准化的,即小箱,特殊
在语料库和
正在处理数据。这将增加你的覆盖面和准确性。
关于algorithm - 从句子中提取食物,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43909954/