如何使用 Spacy 获得两个对齐文本相似性的行级度量?

How to obtain a line-level measure of the similarity of two aligned texts with Spacy?

我有两个对齐的英文文档,每个文档的行数都相同(大约 30k)。我想获得每行相似性的度量,即 line_1 in text_a against line_1 text_b, line_2 text_a 对抗 line_2text_b 等等。 (每一行可能包含多个句子)我是这样做的:

import spacy 
nlp = spacy.load('en_core_web_lg')

file_a = open('text-1.txt', 'r')
file_b = open ('text-2.txt', 'r')
a_doc = nlp(file_a)
b_doc = nlp(file_b)

for a,b in zip(a_doc, b_doc):    
    print("similarity:", a.similarity(b))   

但我收到以下错误:

if len(text) > self.max_length:
TypeError: object of type '_io.TextIOWrapper' has no len()

你能帮帮我吗?非常感谢

nlp() 需要一个字符串,而不是一个文件对象。我稍微编辑了你的代码:

import spacy
nlp = spacy.load('en_core_web_sm')

file_a = open('text-1.txt', 'r').read()
file_b = open ('text-2.txt', 'r').read()
a_doc = nlp(file_a)
b_doc = nlp(file_b)

for a,b in zip(a_doc, b_doc):
    print("similarity:", a.similarity(b))

而且 运行 很好

nlp 需要一个字符串,而不是文件处理程序对象。

试试这个

a_doc = nlp("".join(file_a.readlines()))
b_doc = nlp("".join(file_b.readlines()))