Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从句子NLP中提取意义的方法_Python_Nlp_Artificial Intelligence_Nltk - Fatal编程技术网

Python 从句子NLP中提取意义的方法

Python 从句子NLP中提取意义的方法,python,nlp,artificial-intelligence,nltk,Python,Nlp,Artificial Intelligence,Nltk,我想知道的是,从文本中提取意义的最佳方法是什么。我读了一本,它确实给了我一些关于NLP基础知识的好信息 我是nlp的新手,所以我很难决定我的方向。在阅读了NLTK文本之后,以下是我所想的解决问题的方法: 下面是我的理想目标和例句: 输入: 2018年8月29日至2018年9月12日(每周三)和2018年9月10日(周一)进行X 以粗体输出词性标记(至少是我看到的): 2018年8月29日(日期)至2018年9月12日(日期)(每(一次)星期三(一天)和2018年9月10日(日期)星期一(一天)

我想知道的是,从文本中提取意义的最佳方法是什么。我读了一本,它确实给了我一些关于NLP基础知识的好信息

我是nlp的新手,所以我很难决定我的方向。在阅读了NLTK文本之后,以下是我所想的解决问题的方法:

下面是我的理想目标和例句:

输入:

2018年8月29日至2018年9月12日(每周三)和2018年9月10日(周一)进行X

以粗体输出词性标记(至少是我看到的):

2018年8月29日(日期)至2018年9月12日(日期)(每(一次)星期三(一天)和2018年9月10日(日期)星期一(一天

接下来,我将循环浏览词性标记并扔掉文本。我希望在对文本进行适当的分块后,我需要进行一些额外的处理,以确定用户到底想要什么。以下是我认为在成功地从句子中提取意义后的输出:

2018年8月29日-2018年9月12日,星期三

2018年9月10日,星期一

我意识到通过正则表达式可以很容易地找到月份的天数、日期等

但是我的问题是NLTK方法NLTK.pos_-tag方法对我不起作用(对于那些不熟悉的人来说,该方法是词性标记的一部分,用于标记名词、动词等词)。我很可能必须自定义自己的pos_-tag方法

这是我的问题。首先标记每个标记化的单词,然后从标记中分块句子是否被认为是提取意义的最佳实践

我猜我需要某种人工智能分类来学习组块部分,以便将来我可以从多个句子中提取意义


我的方法正常吗?我疯了吗?:)

虽然你没有疯(可能:),但这是一个非常普遍的问题,管理员很快会(可能)将其标记为不适合这样做,因为它太广泛了。”提取一句话的意思“基本上,在NLP工作的每个人都在做几十年的事情。大多数(商业上/实际上)可行的方法之所以存在,只是因为它们的应用领域相对有限。设想一个用于酒店预订的聊天机器人(具有清晰定义的到达/出发日期、位置等),一个允许语音输入的汽车导航系统(“我想去X,避开高速公路”),等等

由于您的示例输出的目标是日期和时间,这实际上不是pos标记器的目的,因此一些时态分析模块可能更适合您的用例。我想到的只有一个工具包,它使用TimeML方案(这也是您可能想要了解的)来指示具体的时间点,以及时间间隔,并尝试将其标准化为机器可读的时间点

在NLP模块方面,您还需要什么,这在很大程度上取决于您的输入。如果它相对严格(不同的表达方式数量很少),那么手工制作一个简单的语法可能是你最好的选择。然而,事情很容易变得更加复杂Do X on Mondays从dd-mm-yyyy到dd-mm-yyyy”在自然语言中同样可以用“Do X on Mondays,从dd-mm-yyyy开始,到dd-mm-yyyy结束”来表示。它确实有助于了解用户将使用哪种语言。一个开箱即用的软件包或工具包(对于英语,更不用说其他6000种左右官方认可的语言之一(无论哪个机构决定):)尚未被发现/开发


除了NLTK(我发现NLTK对于教育目的非常有价值,ins的使用相对灵活,但现在也有点过时),您可以查看。从某种程度上说,它的目的是做同样的事情,但使用更现代的方法和数据集。

我想你要找的不是词性标注,因为词性标注的意思是决定一个词是否是名词、动词等。你的问题是一个更复杂的问题,表示命名实体识别,允许您了解单词或单词列表是否是地名、人名、酒店名等

有许多资源、教程库(甚至在nltk和Spacy中)可以解释这个问题

希望我能帮助你更好地定位

祝你好运;)