Это будет делать то, что вы хотите.
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
from collections import defaultdict
from nltk.corpus import wordnet
from nltk.tokenize import word_tokenize
df = pd.read_csv("C:\\your_path\\synonyms_antonyms.csv")
# pick a field from a dataframe; convert to text and make all lower case
df['review_text'] = df['review_text'].astype('str')
df['review_text'] = df['review_text'].str.lower()
df['review_text'] = df['review_text'].str.split(',')
df.dtypes
my_list = df['review_text'].values.tolist()
s = ','.join(str(v) for v in my_list)
type(s)
tokens = word_tokenize(s)
# Store results in a dict where key is token and value is a set of synonyms and antonyms
tokens_syns, tokens_ant = defaultdict(set), defaultdict(set)
for token in tokens:
for synset in wordnet.synsets(token):
for lemma in synset.lemmas():
tokens_syns[token].add(lemma.name()) # Add the synonyms
if lemma.antonyms(): # Check if antonyms are available
tokens_ant[token].add(lemma.antonyms()[0].name()) # Add antonyms
# Check for 'skin'
token = 'skin'
print(f'For the word "{token}":')
print('The synonyms are:', tokens_syns[token])
print('The antonyms are:', tokens_ant[token])
# Conclusion:
For the word "skin":
The synonyms are: {'scramble', 'pelt', 'shinny', 'pare', 'cutis', 'hide', 'shin', 'bark', 'sputter', 'struggle', 'clamber', 'scrape', 'tegument', 'peel', 'skin'}
The antonyms are: set()