【发布时间】:2021-01-05 05:40:07
【问题描述】:
只要句子中有被动语态,我就会尝试使用SpaCy Matcher package 来检测匹配项。我写了下面的模式,它正确地找到了被动动词和句子。虽然我现在的问题是速度。我有大约 100 万条记录,每条记录大约有 10 个句子。我想知道我是否可以做任何事情来提高搜索效率?喜欢不返回结束和开始标记?
匹配器:
matcher = Matcher(nlp.vocab)
passive_rule1 = [{'DEP':'nsubjpass', 'OP':'*'}, {'DEP':'xcomp', 'OP':'*'}, {'DEP':'aux','OP':'*'},{'DEP':'auxpass'}, {'DEP':'nsubj', 'OP':'*'}, {'TAG':'VBN'}]
passive_rule2 = [{'DEP': 'attr'}, {'DEP':'det', 'OP':'*'}, {'Tag':'NOUN', 'OP': '?'}, {'TAG':'VBN'}]
matcher.add('passive_rule1',None, passive_rule1)
matcher.add('passive_rule2 ', None, passive_rule2)
寻找匹配:
df.loc[:, 'PassiveVoice'] = df.Sentence.apply(lambda x:1 if len(matcher(nlp(x)))>0 else 0)
或者,如果有人有任何其他想法,我会很高兴听到!
【问题讨论】:
标签: machine-learning text nlp data-science spacy