从非结构化数据中提取重要实体

Extracting important entities from unstructured data

我正在处理一个 NLP 问题,我完全卡在了某个点上。我对这些很陌生,所以如果问题很愚蠢,请原谅。 我有一个完全非结构化的文本让我们说:“a person named x y is travelling to country ab, he spent xyz (alpha/currency/beta/gamma), ate a b c d e f food items and many more.” 现在我必须提取

|name of person| country's name | amount spent and the currency | food items he ate | place of              
stay|

这里的约束是,文本中包含一些虚假信息,例如:食品b和c在特定国家找不到,因此不应提取。 我有一个嵌套字典,如下所示:

{country_name: {place 1: {name of hotels:[hotel1, hotel2, hotel3....],
                          eatables: [food1, food2, food3, food4.....],
                          currency_accepted: [c1, c2, c3, c4.......],
                          }
                }
} 

我想在非结构化文本中使用这个字典,以便我可以解析数据并提取数据框单独列中相关的实体。 我见过基于 NER 的方法,但我想它需要标记单词,而且我有大量数据。

我尝试过基于正则表达式的模式匹配方法,但这并没有给出所有结果,此外我还尝试匹配存储在列表中的所有实体,但这会创建许多虚假实体被提取的问题,准确性在这里非常重要。

我正在寻找更多改进的基于解析的方法,如果有任何方法可以在该字典上训练某个模型,以便它仅在非结构化文本中找到键时才查找嵌套字典的值。

在进行机器学习之前,您可以尝试使用 fuzzywuzzy。我在工作中遇到了类似的问题,通过调整ratio属性可以达到很高的准确率。因此,对于每个提取的实体,您必须 运行 通过 fuzzywuzzy 和您的字典。

关于

的问题

but this creates the problem of many false entities being extracted

我会实现一个过滤器:如果提取和匹配的实体不在列表中,则将提取的实体排除在外,否则,继续逻辑。