我现在正在处理文本数据,并对其进行预处理(我正在处理法语数据文本(。
到目前为止,这是我的代码:
df = pd.read_csv('file.csv', sep=';')
from nltk.corpus import stopwords
import re
from nltk.tokenize import RegexpTokenizer
from spacy.lang.fr import French
stop_words = set(stopwords.words('french'))
tokenizer = nltk.tokenize.RegexpTokenizer(r'w+')
lemmatizer = French.Defaults.create_lemmatizer()
def clean_text(text):
text = text.lower()
text = tokenizer.tokenize(text)
text = [word for word in text if not word in stop_words]
text = [lemmatizer.lemmatize(word) for word in text]
final_text = ' '.join( [w for w in text if len(w)>2] )
return final_text
df['comms_clean'] = df['comms'].apply(lambda x : clean_text(x))
但我得到了这个错误:
TypeError: lemmatize() missing 3 required positional arguments: 'index', 'exceptions', and 'rules'
我习惯于使用英语数据,所以这是我第一次使用这种软件包,所以我很失落。我该怎么办才能解决这个问题?
您显示的错误告诉您,当您调用它时,这些参数丢失了,所以您需要它们来调用方法lemmatize()
,但您只传递了一个:lemmatize(string=word)
。
这里有官方文件:https://spacy.io/api/lemmatizer#_title
这里有lemmatizer对象的实现,您可以在其中找到lemmatize
方法:https://github.com/explosion/spaCy/blob/master/spacy/lemmatizer.py
def lemmatize(self, string, index, exceptions, rules):