背单词易混——ptyhon单词相似度筛选

一、 思路

背单词相似的很容易混,所以找出所有相似的进行重点突破。
使用Levenshtein计算单词相似度

二、代码

1、导入表,计算相似度并输出

数据在单词表.xlsx
在这里插入图片描述
可以添加音标,例句等其他列。

import pandas as pd
import numpy as np
import difflib
import Levenshtein
# def get_equal_rate(str1, str2):
#     return difflib.SequenceMatcher(None, str1, str2).quick_ratio()
def get_equal_rate(str1, str2):
    try:
        return round(Levenshtein.ratio(str1, str2),2)
    except:
        print(str1)
        exit(1)
sheet = pd.read_excel('单词表.xlsx',sheet_name='Sheet1')
sheet.dropna(axis = 0,inplace=True)
sheet['first']=''
sheet['first_mean']=''
sheet['second']=''
sheet['second_mean']=''
sheet['third']=''
sheet['third_mean']=''
sheet['first_similar']=''
sheet['second_similar']=''
sheet['third_similar']=''
sheet['sort']=''
for a in range(len(sheet)):
    text= sheet['英文'].iat[a]
    sheet['similar']=''
    sheet['similar']=sheet['英文'].apply(lambda x:get_equal_rate(x,text))
    sheet['sort']=sheet['similar'].rank(method='first')
    sheet['first'].iat[a]=sheet['英文'].at[sheet[sheet.sort==float(len(sheet)-1)].index[0]]
    sheet['first_mean'].iat[a]=sheet['中文'].at[sheet[sheet.sort==float(len(sheet)-1)].index[0]]
    sheet['second'].iat[a]=sheet['英文'].at[sheet[sheet.sort==float(len(sheet)-2)].index[0]]
    sheet['second_mean'].iat[a]=sheet['中文'].at[sheet[sheet.sort==float(len(sheet)-2)].index[0]]
    sheet['third'].iat[a]=sheet['英文'].at[sheet[sheet.sort==float(len(sheet)-3)].index[0]]
    sheet['third_mean'].iat[a]=sheet['中文'].at[sheet[sheet.sort==float(len(sheet)-3)].index[0]]
    sheet['first_similar'].iat[a]=sheet['similar'].at[sheet[sheet.sort==float(len(sheet)-1)].index[0]]
    sheet['second_similar'].iat[a]=sheet['similar'].at[sheet[sheet.sort==float(len(sheet)-2)].index[0]]
    sheet['third_similar'].iat[a]=sheet['similar'].at[sheet[sheet.sort==float(len(sheet)-3)].index[0]]
sheet.drop(['similar','sort'],inplace=True,axis=1)
sheet.to_excel('相似度表.xlsx',index=None)

2.去除相似度低的单词

import pandas as pd
df=pd.read_excel('相似度表.xlsx')
index=0
阈值=0.8
df.drop(df[(df['first_similar']<阈值) & (df['second_similar']<阈值) & (df['third_similar']<阈值)].index,inplace=True)
df.drop(df[(df['first_similar']==1)].index,inplace=True)
for i in range(len(df)):
    if df['first_similar'].iat[i]<阈值:
        df['first'].iat[i]=""
        df['first_mean'].iat[i]=""
        df['first_similar'].iat[i]=0
    if df['second_similar'].iat[i]<阈值:
        df['second'].iat[i]=""
        df['second_mean'].iat[i]=""
        df['second_similar'].iat[i]=0
    if df['third_similar'].iat[i]<阈值:
        df['third'].iat[i]=""
        df['third_mean'].iat[i]=""
        df['third_similar'].iat[i]=0
# df.drop(['first_similar','second_similar','third_similar'], axis=1,inplace=True)
df.to_excel('筛选后的相似度表.xlsx',index=None)

三、结果

背单词易混——ptyhon单词相似度筛选_第1张图片

你可能感兴趣的:(python,python,数据分析)