句子结构识别-虚假

Programmer_nltk:

我打算使用spacy和textacy来识别英语中的句子结构。

例如:猫坐在垫子上-SVO,猫跳了起来,拿起了饼干-SVV0。那只猫吃了饼干和饼干。-SVOO。

该程序应该读取一个段落并以SVO,SVOO,SVVO或其他自定义结构返回每个句子的输出。

到目前为止的努力:

# -*- coding: utf-8 -*-
#!/usr/bin/env python
from __future__ import unicode_literals
# Load Library files
import en_core_web_sm
import spacy
import textacy
nlp = en_core_web_sm.load()
SUBJ = ["nsubj","nsubjpass"] 
VERB = ["ROOT"] 
OBJ = ["dobj", "pobj", "dobj"] 
text = nlp(u'The cat sat on the mat. The cat jumped and picked up the biscuit. The cat ate biscuit and cookies.')
sub_toks = [tok for tok in text if (tok.dep_ in SUBJ) ]
obj_toks = [tok for tok in text if (tok.dep_ in OBJ) ]
vrb_toks = [tok for tok in text if (tok.dep_ in VERB) ]
text_ext = list(textacy.extract.subject_verb_object_triples(text))
print("Subjects:", sub_toks)
print("VERB :", vrb_toks)
print("OBJECT(s):", obj_toks)
print ("SVO:", text_ext)

输出:

(u'Subjects:', [cat, cat, cat])
(u'VERB :', [sat, jumped, ate])
(u'OBJECT(s):', [mat, biscuit, biscuit])
(u'SVO:', [(cat, ate, biscuit), (cat, ate, cookies)])
  • 问题1:SVO被覆盖。为什么?
  • 问题2:如何识别句子SVOO SVO SVVO等?

编辑1:

我正在概念化的某种方法。

from __future__ import unicode_literals
import spacy,en_core_web_sm
import textacy
nlp = en_core_web_sm.load()
sentence = 'I will go to the mall.'
doc = nlp(sentence)
chk_set = set(['PRP','MD','NN'])
result = chk_set.issubset(t.tag_ for t in doc)
if result == False:
    print "SVO not identified"
elif result == True: # shouldn't do this
    print "SVO"
else:
    print "Others..."

编辑2:

取得进一步进展

from __future__ import unicode_literals
import spacy,en_core_web_sm
import textacy
nlp = en_core_web_sm.load()
sentence = 'The cat sat on the mat. The cat jumped and picked up the biscuit. The cat ate biscuit and cookies.'
doc = nlp(sentence)
print(" ".join([token.dep_ for token in doc]))

电流输出:

det nsubj ROOT prep det pobj punct det nsubj ROOT cc conj prt det dobj punct det nsubj ROOT dobj cc conj punct

预期产量:

SVO SVVO SVOO

想法是将依赖项标签分解为简单的主谓词和宾语模型。

如果没有其他选择,可以考虑使用正则表达式来实现。但这是我的最后选择。

编辑3:

在研究了此链接后,得到了一些改进。

def testSVOs():
    nlp = en_core_web_sm.load()
    tok = nlp("The cat sat on the mat. The cat jumped for the biscuit. The cat ate biscuit and cookies.")
    svos = findSVOs(tok)
    print(svos)

电流输出:

[(u'cat', u'sat', u'mat'), (u'cat', u'jumped', u'biscuit'), (u'cat', u'ate', u'biscuit'), (u'cat', u'ate', u'cookies')]

预期产量:

我期待句子的符号。尽管我能够提取SVO上如何将其转换为SVO表示法。它更多是模式识别,而不是句子内容本身。

SVO SVO SVOO
伊格里尼斯:

问题1:SVO被覆盖。为什么?

这是textacy问题。这部分效果不佳,请参阅此博客

问题2:如何将句子识别为SVOO SVO SVVO等?

您应该解析依赖关系树。SpaCy提供的信息,您只需要编写一套规则来提取出来,使用.head.left.right.children属性。

>>for word in text: 
    print('%10s %5s %10s %10s %s'%(word.text, word.tag_, word.dep_, word.pos_, word.head.text_))

        The    DT        det        DET cat 
        cat    NN      nsubj       NOUN sat 
        sat   VBD       ROOT       VERB sat 
         on    IN       prep        ADP sat 
        the    DT        det        DET mat
        mat    NN       pobj       NOUN on 
          .     .      punct      PUNCT sat 
         of    IN       ROOT        ADP of 
        the    DT        det        DET lab
        art    NN   compound       NOUN lab
        lab    NN       pobj       NOUN of 
          .     .      punct      PUNCT of 
        The    DT        det        DET cat 
        cat    NN      nsubj       NOUN jumped 
     jumped   VBD       ROOT       VERB jumped 
        and    CC         cc      CCONJ jumped 
     picked   VBD       conj       VERB jumped 
         up    RP        prt       PART picked 
        the    DT        det        DET biscuit
    biscuit    NN       dobj       NOUN picked 
          .     .      punct      PUNCT jumped 
        The    DT        det        DET cat 
        cat    NN      nsubj       NOUN ate 
        ate   VBD       ROOT       VERB ate 
    biscuit    NN       dobj       NOUN ate 
        and    CC         cc      CCONJ biscuit 
    cookies   NNS       conj       NOUN biscuit 
          .     .      punct      PUNCT ate 

我建议您看一下这段代码,只需将其添加pobj到的列表中OBJECTS,就可以覆盖SVO和SVOO。稍微摆弄一下就可以得到SVVO。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

识别文本中的句子

来自分类Dev

如何识别句子的主语?

来自分类Dev

希伯来语上的虚假句子标记化错误

来自分类Dev

先前句子的命名实体识别影响

来自分类Python

NLTK停用词在句子中无法识别“ i”

来自分类Dev

函数无法识别Yaml嵌套结构

来自分类Dev

Antlr4如何检测无法识别的令牌和给定的句子无效

来自分类Dev

如何根据句子中的一个字符串识别行

来自分类Dev

如何基于句子结构在输入字段中创建多个自动完成功能?

来自分类Dev

基于像素的模式识别的数据结构

来自分类Dev

C#和Regex-无法识别的分组结构

来自分类Dev

如何检查文件头结构以识别MSI文件

来自分类Dev

是“断言是虚假的”;好的做法?

来自分类Dev

nullptr虚假吗?

来自分类Dev

NSFetchResultsController显示虚假对象

来自分类Dev

网站上的Googlebot /结构化数据测试工具无法识别Trustpilot结构化数据标记

来自分类Dev

为什么我的C代码无法识别结构数组并重复用户输入?

来自分类Dev

CGo为什么无法识别我在头文件中声明的结构?

来自分类Dev

Xcode 11无法识别静态库的体系结构:MacCatalyst(又名UIKitForMac)

来自分类Dev

Ember-CLI路由:更改了我的路由/模板结构,但是构建无法识别更改?

来自分类Dev

对结构和类进行Boost融合序列类型和名称识别

来自分类Dev

PSR-4 Autoloader无法识别子文件夹结构中的类

来自分类Dev

识别未知的结构化数据格式–可能是面向类的JSON

来自分类Java

虚假客户和春季重试

来自分类Dev

如何找到虚假的印刷声明?

来自分类Python

带有虚假的名词短语

来自分类Dev

对std :: marker :: Sized的虚假要求

来自分类Dev

对bash脚本的虚假报告

来自分类Dev

FakeXrmEasy中的虚假插件行为?

TOP 榜单

  1. 1

    来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

  2. 2

    HikariPool-1-连接不可用,对于极小的负载服务器,请求在30000ms之后超时

  3. 3

    OpenJDK的和AdoptOpenJDK的区别

  4. 4

    任务':app:minifyReleaseWithR8'.java.lang.NullPointerException的执行失败(无错误消息)

  5. 5

    是什么在Android的consumer-rules.pro和proguard-rules.pro之间的区别?

  6. 6

    java.lang.NoClassDefFoundError:无法初始化类org.bytedeco.javacpp.avutil

  7. 7

    如何优化在Java中这种方法吗?我得到的时间超限

  8. 8

    java.lang.NoSuchFieldError的:ACCEPT_CASE_INSENSITIVE_VALUES

  9. 9

    Keras提前停止回调错误,val_loss指标不可用

  10. 10

    错误TS1086:一个存取器不能在角9的环境上下文被声明

  11. 11

    如何在exoplayer中播放本地媒体文件的硬编码内容uri

  12. 12

    请问Spring事务管理工作与Spring WebFlux?

  13. 13

    在JavaScript中删除多个对象键值

  14. 14

    tensorflow:仅在可用val_acc的情况下可以保存最佳模型,跳过

  15. 15

    未定义:grpc.SupportPackageIsVersion7 grpc.ServiceRegistrar

  16. 16

    在IntelliJ IDEA中并行运行测试用例

  17. 17

    无法装载动态库“libnvinfer.so.6”

  18. 18

    我在android studio中创建了clicker应用。但是,运行时,应用程序在调用“ incrementCount()”后崩溃。为什么?

  19. 19

    Java的无法解析日期的SimpleDateFormat

  20. 20

    如何在Python中将字典拆分成多个字典的列表,所有字典的大小均为N

  21. 21

    如何在“ SQLyog社区版-Mysql GUI”中添加检查约束?

热门标签

归档