使用spacy依赖解析在字典中进行句子分割



我有一个包含源段和目标段的TMX文件。其中一些片段是由几个句子组成的。我的目标是对这些多语句段进行分段,使整个TMX文件由单个语句段组成。

我打算使用spacy的依赖解析器来分割这些多语句段。

为了实现这一点,我使用翻译工具包包提取了源片段和目标片段。

然后,我将源段和目标段添加到字典中(seg_dic(。接下来,我将这些片段转换为nlp-doc对象,并再次将它们存储在字典(doc_dic(中。我现在想使用spacy的依赖解析器来分割任何多语句段。。。

for sent in doc.sents:
print(sent.text)

但我不知道如何将这些片段存储在字典中。

这就是我目前所拥有的:

import spacy
from translate.storage.tmx import tmxfile
with open("./files/NTA_test.tmx", 'rb') as fin:
tmx_file = tmxfile(fin, 'de-DE', 'en-GB')
nlp_de = spacy.load("de_core_news_lg")
nlp_en = spacy.load("en_core_web_lg")
seg_dic = {}
doc_dic = {}
for node in tmx_file.unit_iter():
seg_dic[node.source] = node.target
for source_seg, target_seg in seg_dic.items():
doc_dic[nlp_de(source_seg)] = nlp_en(target_seg)

有人能解释一下我如何从这里开始吗?我如何使用";对于发送在文件中的"sents";思维方式

这里的解决方案是,你不应该把你的东西放在这样的字典里——使用列表。也许是这样的。

import spacy
from translate.storage.tmx import tmxfile
with open("./files/NTA_test.tmx", 'rb') as fin:
tmx_file = tmxfile(fin, 'de-DE', 'en-GB')
de = spacy.load("de_core_news_lg")
en = spacy.load("en_core_web_lg")
out = []
for node in tmx_file.unit_iter():
de_sents = list(de(node.source).sents)
en_sents = list(en(node.target).sents)
assert len(de_sents) == len(en_sents), "Different number of sentences!"

for desent, ensent in zip(de_sents, en_sents):
out.append( (desent, ensent) )

最困难的部分是当句子的数量不一致时该怎么办。还要注意的是,我一开始会对你的转换持谨慎态度,因为翻译可能做得很全面,所以即使句子按数字排列,也不能保证第一个DE对应于第一个EN。

相关内容

  • 没有找到相关文章

最新更新