Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Spacy 句子切分和依赖解析器_Spacy - Fatal编程技术网

Spacy 句子切分和依赖解析器

Spacy 句子切分和依赖解析器,spacy,Spacy,我对python(使用Python3)和spacy(以及编程)相当陌生。请容忍我 我有三个问题,其中两个或多或少是一样的,我就是不能让它工作。 我接受了“使用spacy进行语法特定搜索”(syntax specific search with spacy),并尝试让不同的东西发挥作用 我的程序当前读取txt和正常提取 if w.lower_ != 'music': return False 工作 我的第一个问题是:如何让spacy提取两个单词? 例如:“古典音乐” 通过前面提到的片段,我可以让

我对python(使用Python3)和spacy(以及编程)相当陌生。请容忍我

我有三个问题,其中两个或多或少是一样的,我就是不能让它工作。 我接受了“使用spacy进行语法特定搜索”(syntax specific search with spacy),并尝试让不同的东西发挥作用

我的程序当前读取txt和正常提取

if w.lower_ != 'music':
return False
工作

我的第一个问题是:如何让spacy提取两个单词? 例如:“古典音乐” 通过前面提到的片段,我可以让它提取古典音乐或音乐。但如果我只搜索其中一个词,我也会得到我不想要的结果

古典时期/时代

或者当我只寻找音乐的时候

音乐-巴洛克、现代

第二个问题是:如何让依赖项工作

示例依赖关系包括:

elif w.dep_ != 'nsubj': # Is it the subject of a verb?
return False
很好。但我试过的其他方法都不管用

例如,我想提取包含单词“生日”和依赖项“日期”的句子。(因此依赖项是一个实体)

我得到

if d.ent_type_ != ‘DATE’:
return False 
工作

所以现在看起来是这样的:

def extract_information(w,d):
if w.lower_ != ‘birthday’:
return False
elif d.ent_type_ != ‘DATE’:
return False
else:
return True
像这样的东西有用吗

如果它起作用,第三个问题是我如何过滤句子,例如带有日期的句子。因此,如果句子包含某个单词和日期,则排除它

最后一件事可能是,我在某个地方读到依赖项是基于“斯坦福类型依赖项手册”。有没有列出哪些依赖项与spacy一起工作


感谢您的耐心和帮助:)

在我开始为您的问题提供一些简单的建议之前,您是否尝试过在您的一些句子中使用displace's

使用“John的生日是昨天”的示例句子,您会发现在解析的句子中,生日和昨天不一定是彼此的直接依赖关系。因此,基于具有日期类型实体依赖关系的生日词进行搜索可能不会得到最好的结果

关于第一个问题: 一种蛮力方法是在解析完句子后寻找匹配的后续单词

doc = nlp(u'Mary enjoys classical music.')

for (i,token) in enumerate(doc):
    if (token.lower_ == 'classical') and (i != len(doc)-1):             
        if doc[i+1].lower_ == 'music':
            print 'Target Acquired!'
如果您不确定enumerate的功能,请查找它。这是python使用python的方式

对于问题2和问题3,一种简单(但不优雅)的解决方法是在解析的句子中确定单词“生日”是否存在,以及它是否包含类型为“日期”的实体

doc = nlp(u'John\'s birthday was yesterday.')

for token in doc:
    if token.lower_ == 'birthday':
        for entities in doc.ents:
            if entities.label_ == 'DATE':
                print 'Found ya!'
至于依赖项列表,我想您指的是词性标记。请查看有关此的文档


祝你好运!希望这能有所帮助。

在我开始为你的问题提供一些简单的建议之前,你有没有试过在你的一些句子中使用displace's

使用“John的生日是昨天”的示例句子,您会发现在解析的句子中,生日和昨天不一定是彼此的直接依赖关系。因此,基于具有日期类型实体依赖关系的生日词进行搜索可能不会得到最好的结果

关于第一个问题: 一种蛮力方法是在解析完句子后寻找匹配的后续单词

doc = nlp(u'Mary enjoys classical music.')

for (i,token) in enumerate(doc):
    if (token.lower_ == 'classical') and (i != len(doc)-1):             
        if doc[i+1].lower_ == 'music':
            print 'Target Acquired!'
如果您不确定enumerate的功能,请查找它。这是python使用python的方式

对于问题2和问题3,一种简单(但不优雅)的解决方法是在解析的句子中确定单词“生日”是否存在,以及它是否包含类型为“日期”的实体

doc = nlp(u'John\'s birthday was yesterday.')

for token in doc:
    if token.lower_ == 'birthday':
        for entities in doc.ents:
            if entities.label_ == 'DATE':
                print 'Found ya!'
至于依赖项列表,我想您指的是词性标记。请查看有关此的文档


祝你好运!希望有帮助。

感谢您的快速帮助,我现在才有时间测试它。“不快可视化”是一个很好的提示,它向我展示了我对句子的理解并不像spacys:)我尝试了你的方法,它们自己工作。意思是:我不能让它们在我的程序中工作(抱歉)日期命令不幸地没有与前面的语句连接,因此它列出了所有找到的日期。你知道怎么修吗?其次,我的print命令是“for word in document\u read:if extract\u information(word):print(“”.join(w.string for w in word.head.subtree).strip())”,我得到错误消息“extract\u information()缺少1个必需的位置参数”。可以理解,因为我们把i作为第二个论点。但是如果我包含i->“extract_information(word,i)”,我会得到错误消息“name'i'未定义”也可以理解,但我不知道如何定义它并将其包含在“print(“”.join(w.string表示word.head.subtree中的w).strip()中“。我目前正在尝试修复它,因此如果我自己得到它,我会更新。再次感谢!@My3vilMe您可以分享/解释您尝试实现的整个过程吗?我很难理解您在上面两条评论中的意图。也许还可以提供一个示例,说明您希望的示例句子输出。谢谢。”对于快速帮助,我现在才有时间测试它。不愉快可视化器是一个很好的提示,它向我表明我对句子的理解不像spacys:)我尝试了你的方法,它们自己工作。意思是:我不能让它们在我的程序中工作(抱歉)日期命令不幸地没有与前面的语句连接,因此它列出了所有找到的日期。你知道怎么修吗?其次,我的print命令是“for word in document\u read:if extract\u information(word):print(“”.join(w.string for w in word.head.subtree).strip())”,我得到错误消息“extract\u information()缺少1个必需的位置参数”。可以理解,因为我们把i作为第二个论点。但是,如果我包含i->“extract_information(word,i)”,我会得到错误消息“name'i'未定义”也可以理解,但我不知道如何定义它并将其包含在“print(“”.join(w.string代表w in word.head.subtree).strip()中。我目前正在尝试修复它