我使用Tokenised
拥有Spacy
法语文本,但无法使用TFidfvectoriser进行矢量化
我尝试了这段代码,但它给出了错误
vectorizer.fit_transform(data.spacyd)
from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer
from spacy.tokenizer import Tokenizer
vectorizer=CountVectorizer()
'spacy.tokens.doc.Doc'对象没有属性'lower'
答案 0 :(得分:1)
from sklearn.feature_extraction.text import TfidfVectorizer
french_text = ["Les astronomes amateurs jouent également un rôle important en recherche", "John Richard Bond explique le rôle de l'astronomie."]
french_token = [x.split() for x in french_text] # i have just use space for splitting
#assuming your token as
print(french_token)
[['Les',
'astronomes',
'amateurs',
'jouent',
'également',
'un',
'rôle',
'important',
'en',
'recherche'],
['John', 'Richard', 'Bond', 'explique', 'le', 'rôle', 'de', "l'astronomie."]]
现在进入矢量化部分,身份功能将传递您的令牌,而不会 标记化并将预处理器传递为None,小写= False
def identity(arg):
'''
this function will return same arg
'''
return arg
vect = TfidfVectorizer(tokenizer = identity, preprocessor=None,lowercase = False)
vect.fit_transform(french_token)
答案 1 :(得分:0)
您似乎正在向向量化器传递一个spaCy Document
对象。因此,您需要首先提取每个文档的令牌。
尝试类似列表理解的方法,首先获取令牌字符串列表(token.text
为您提供spaCy中的令牌文本),然后将其传递给矢量化器:
vectorizer.fit_transform([token.text for token in data.spacyd])
如果data.spacyd
中包含多个Document
,则只需修改上面的内容即可对每个变量进行迭代。