Python 如何获得两个空间对齐文本的相似性的行级度量?

Python 如何获得两个空间对齐文本的相似性的行级度量?,python,list,file-handling,spacy,Python,List,File Handling,Spacy,我有两个对齐的英文文档,每个文档的行数相同(约30k)。我想得到每行的相似性度量,也就是说,文本a中的行1和文本b中的行1,文本a中的行2和文本b中的行2,依此类推。(每行可能包含多个句子)我已经这样做了: 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 = n

我有两个对齐的英文文档,每个文档的行数相同(约30k)。我想得到每行的相似性度量,也就是说,文本a中的行1和文本b中的行1,文本a中的行2和文本b中的行2,依此类推。(每行可能包含多个句子)我已经这样做了:

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()))