我导入的文本文件很少有 mojibake,因此我尝试使用 ftfy 库修复它们,然后再将它们提供给 Spacy (NLP)。与此问题相关的代码片段:
import spacy
import classy_classification
import pandas as pd
import ftfy
with open ('SID - Unknown.txt', "r", encoding="utf8") as k:
Unknown = k.read().splitlines()
data = {}
data["Unknown"] = Unknown
# NLP model
spacy.util.fix_random_seed(0)
nlp = spacy.load("en_core_web_md")
nlp.add_pipe("text_categorizer",
config={
"data": data,
"model": "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
"cat_type": "multi-label",
"device": "gpu"
}
)
print(ftfy.fix_text(Unknown))
我收到错误:
属性错误:“列表”对象没有属性“查找”
当我根据此错误进行查找时,很多线程建议在列表的情况下使用index()而不是find()。但在本例中,查找是在 ftfy.fix_text 内完成的。我怎样才能解决这个错误?我希望它保持列表的形式,因为这就是我将其输入 Spacy 模型的方式。
正如您所注意到的,您的错误发生在
ftfy.fix_text
内。因此,当我们知道某个不是我们自己编写的函数出现问题时,我们接下来可以查看的是“我们在该函数中输入了什么?”
.
就您而言,您将提供
Unknown
作为输入。 Unknown
是这样制作的:
with open ('SID - Unknown.txt', "r", encoding="utf8") as k:
Unknown = k.read().splitlines()
这就是出问题的地方:Unknown 是一个字符串列表,但
ftfy.fix_text
函数需要一个字符串,因为您可以在here找到一些示例。
因此,您的问题的解决方案可以是:
val singleString = ' '.join(Unknown)
print(ftfy.fix_text(singleString))
ftfy.fix_text
的输出:for line in Unknown:
print(ftfy.fix_text(line))