如何从自然语言文本中提取作业?

数据挖掘 nlp
2022-02-22 19:58:28

我对 NLP/IE 有点陌生。我正在 NLP/IE 中寻找与提取已分配的值有关的任务。

例如,给定文本“值是 45.1hz”或“颜色是蓝色”,我希望能够提取 45.1hz 已分配给该值或颜色已设置为蓝色的事实.

我试图为这项任务找到正确的名称 - 它似乎与关系提取有些相关,但它似乎没有两个或更多实体,而且我不清楚这种关系。

它也可能与三元组提取有关,但我再一次对值是什么感到有点茫然,即 (color, be, blue) ?

我正在寻找此类任务的名称,您可以在其中提取分配的值,以获得特定的预定义值。

2个回答

这确实是一种非常特殊的关系提取类型。一般来说,关系提取要复杂得多,因为它不仅涉及简单的句子主语动词宾语,也不仅仅是动词is

我不清楚您的示例是否代表您正在处理的真实案例:如果是,您可能不需要完整的关系提取,基本的模式匹配规则就可以了。

通过免费的 Wolfram Engine for Developers,您可以使用Wolfram 语言如果您使用的是 Python,则使用 Python 的Wolfram 客户端库来访问 Python 中的引擎。

您可以使用FindTextualAnswer.

FindTextualAnswer["The value is 45.1 hz.", "What is the value?", 
 TargetDevice -> "GPU"]
"45.1 hz"
FindTextualAnswer["45.1 hz was selected as nearest to the true value.", "What is the value?", 
 TargetDevice -> "GPU"]
"45.1 hz"
FindTextualAnswer["The color is blue.", "What is the color?", 
 TargetDevice -> "GPU"]
"blue"
FindTextualAnswer["We think that the color is closest to teal.", "What is the color?", 
 TargetDevice -> "GPU"]
"teal"

需要对主题进行选择。查看TextStructure名词短语是一个很好的起点。

TextStructure["The color is blue."]

数学图形

TextCases可以用来提取这个"NounPhrase"

TextCases["The color is blue.", "NounPhrase", 
 TargetDevice -> "GPU"]
{"The color"}

或者"Noun"

TextCases["The color is blue.", "Noun", 
 TargetDevice -> "GPU"]
{"color"}

与其他功能相结合。

str = "The color is blue.";
{
   #,
   FindTextualAnswer[
    str,
    StringTemplate["What is the `1`?"]@#,
    TargetDevice -> "GPU"
   ]
} & /@ TextCases[str, "Noun", TargetDevice -> "GPU"]
{{"color", "blue"}}

希望这可以帮助。