Получить синонимы из фрейма данных
У меня есть набор данных, состоящий из {вопрос, ответ} для тренировки чат-бота, я загрузил его пандами. Я пытаюсь получить пакет синонимов для каждого слова в каждом вопросе с wordnet.synsets. и у меня возникли некоторые трудности, вот попытка, которую я попробовал.
import pandas as pd`
import nltk.corpus
from nltk.corpus import stopwords, wordnet
from nltk.tokenize import word_tokenize
from nltk.stem import PorterStemmer, WordNetLemmatizer
df =pd.read_csv('healthtapQAs++.csv')
df['question']=df['question'].str.pad(width= i,side= 'left')
df['unpunctuated'] = df['question'].str.replace(r'[^\w\s]+', '')
df['tokenized'] = df['unpunctuated'].apply(word_tokenize)
df['synonyms'] = df['tokenized'].apply(lambda x: [wordnet.synsets(y) for y
in x])
df['synonyms_beta'] = df['synonyms'].apply( lambda x:[(y[0].name()) for y in
x])`
и это тип ошибки, которую я продолжаю получать
> df['synonyms_beta'] = df['synonyms'].apply( lambda x:[(y[0].name()) for y in x])
IndexError: list index out of range
1 ответ
Решение
Вы можете попробовать:
df['synonyms_beta'] = df['synonyms'].apply( lambda x:[(y[0].name()) if len(y) >0 else "no_syn" for y in x])