我使用 SpaCy 库生成依赖项并使用以下代码将其保存为 CoNLL 格式。
import pandas as pd
import spacy
df1 = pd.read_csv('cleantweets', encoding='latin1')
df1['tweet'] = df1['tweet'].astype(str)
tweet_list = df1['tweet'].values.tolist()
nlp = spacy.load("en_core_web_sm")
for i in tweet_list:
doc = nlp(i)
for sent in doc.sents:
print('\n')
for i, word in enumerate(sent):
if word.head is word:
head_idx = 0
else:
head_idx = doc[i].head.i + 1
print("%d\t%s\t%d\t%s\t%s\t%s" % (
i+1,
word.head,
head_idx,
word.text,
word.dep_,
word.pos_,
))
这行得通,但是我的数据集中有一些句子被 Spacy 分成两部分,因为它们有两个根。这导致 CoNLL 格式的一个句子有两个字段。
示例:我的数据集中的一个随机句子是:“teanna trump 可能更干净 twitter hoe but”
以 CoNLL 格式保存为:
1 trump 2 teanna compound
2 cleaner 4 trump nsubj
3 cleaner 4 probably advmod
4 cleaner 4 cleaner ROOT
5 hoe 6 twitter amod
6 cleaner 4 hoe dobj
1 but 2 but ROOT
有没有办法将它全部保存在一个字段而不是两个字段中,即使它有两个根,以便“但是”成为字段编号 1 中的第 7 项?这意味着它看起来像这样
1 trump 2 teanna compound
2 cleaner 4 trump nsubj
3 cleaner 4 probably advmod
4 cleaner 4 cleaner ROOT
5 hoe 6 twitter amod
6 cleaner 4 hoe dobj
7 but 2 but ROOT