Я работаю с spacy, чтобы проанализировать текст на французском языке.
Каким-то образом, по моим данным, все акцентированные символы были заменены их неакцентированными эквивалентами (например: réserve -> Reserve).
Следовательно, когда я пытаюсь токенизировать свои строки и извлекать леммы, spacy не может определить мои не акцентированные термины.
import spacy
nlp = spacy.load('fr')
doc_accented = u'réserve moi une chambre'
[token.lemma_ for token in nlp_test(doc_accented) if token.is_punct==False and token.is_space==False and token.is_stop==False]
# Returns : [u'réserver', u'chambrer']
doc_not_accented = u'reserve moi une chambre'
[token.lemma_ for token in nlp_test(doc_not_accented) if token.is_punct==False and token.is_space==False and token.is_stop==False]
# Returns : [u'reserve', u'chambrer']
Я попытался добавить новые записи в словарь, удалив все акценты из существующих записей и скопировав их атрибуты.
import unicodedata
def strip_accents(s):
return ''.join(c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn')
attr_list = ['a list of attributes']
for el in nlp.vocab.strings:
normalized_str = strip_accents(el)
lexeme = nlp_test.vocab[normalized_str]
for attr in attr_list:
setattr(lexeme, attr, getattr(nlp.vocab[el], attr))
Знаете ли вы, если есть способ отредактировать словарь, такой как u'reserve
, может быть интерпретирован spacy как u'réserve'
?
Xavier