向量化标记化的法语文本

时间:2019-07-27 20:29:28

标签: python-3.x nlp spacy

我使用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'

2 个答案:

答案 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,则只需修改上面的内容即可对每个变量进行迭代。