我有一個名為news_collection.csv的資料集,其中有新聞,我正在努力做的是,用預先建立的名為syno.txt的集合中的同義詞替換資料集中的單詞。如果資料集中的某個詞有來自syno.txt的同義詞,我想用該同義詞行的第一個值來替換。 下面是news_collection.csv
。created_at,text
5/13/2021 3:27:55 PM, "我媽媽和她的媽媽一起去給我們送食物"
。 5/13/2021 3:27:55 PM, "那是我的爸爸,你的爸爸沒有和我的爸爸說過話嗎"
下面是syno.txt
媽媽,媽媽,媽媽,媽媽
爸爸,爸爸,爸爸,爸爸
下面是預期的結果
created_at,text
5/13/2021 3:27:55 PM, "我的母親和她的母親一起去給我們送飯"
5/13/2021 3:27:55 PM, "那是我的父親,你的父親沒有和我的父親說話嗎"
以下是我到現在為止所做的嘗試
<import pandas as pd
import re
from nltk.tokenize import word_tokenize
def similarity()。
tweets = pd.read_csv(r'news_collection.csv')
df = pd.DataFrame(tweets, columns=['created_at', 'text'] )
df['created_at'] = pd.to_datetime(df['created_at'] )
df['text'] = df['text'].apply(lambda x: str(x))
df["text"] = df["text"].apply(lambda x: replacesynonyms(x)
return df
def replacesynonyms(text)。
file = open('syno.txt'/span>, 'r'/span>, encoding="utf8"/span>)
//要添加的代碼
有人能幫助解決這個演算法嗎?
uj5u.com熱心網友回復:
試試這個:
def similarity()。
tweets = pd.read_csv(r'news_collection.csv')
df = pd.DataFrame(tweets, columns=['created_at', 'text'] )
df['created_at'] = pd.to_datetime(df['created_at'] )
df['text'] = df['text'].apply(lambda x: str(x))
df["text"] = df["text"].apply(lambda x: replacesynonyms(x)
return df
def create_sets()。
lists_sets = []
file = open('syno.txt'/span>, 'r'/span>, encoding="utf8"/span>)
lines = file.readlines()
for line in lines:
s = set()
words = line.split(',')
for word in words:
s.add(word.strip())
lists_sets.append(s)
return lists_sets
def create_syn_list()。
first_syn_name = []
file = open('syno.txt'/span>, 'r'/span>, encoding="utf8"/span>)
lines = file.readlines()
for line in lines:
first_syn_name.append(line.split(',')[0].strip()
return first_syn_name
lists_sets = create_sets()
first_syn_list = create_syn_list()
def replacesynonyms(text)。
words = text.split()
new_sentence_l=[]
for word in words:
to_add = True[/span]。
for idx, syn_set in enumerate(lists_sets)。
if word in syn_set。
new_sentence_l.append(first_syn_list[idx])
to_add = False[/span
break break
if to_add:
new_sentence_l.append(word)
return ' '/span>.join(new_sentence_l)
df = similarity()
sen = list(df['text'])
for i in sen:
print(i)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/332593.html
標籤:
上一篇:Pandas:如何選擇具有一系列必須匹配的值的資料框架行?
下一篇:使用一個資料框架中的id抓取另一個單獨的資料框架中的資料,這些資料框架不擁有相同的列名,并將字串附加到一個值上。
