我有2个csv文件,dictionary.csv和file.csv,我想检查一下file.csv中是否存在dictionary.csv中的单词。 dictionary.csv中的某些行包含2个以上的单词,我想知道是否有办法做到这一点,
如果该行中有3个单词,并且file.csv中该行中至少有2/3个单词匹配,则返回1,否则返回0
如果该行中有2个单词,并且与file.csv中匹配的行中至少有1/2个单词,则返回1,否则返回0
到目前为止,以下是我的代码,它正在进行精确匹配
file=pd.read_csv("file.csv")
dictionary=pd.read_csv("dictionary.csv")
pattern='|'.join(dictionary)
news["contain diseases1"] = np.where(
news["STORY"].str.contains(pattern, na=False),
1, 0
)
news.to_csv("clues.csv")
为进一步帮助您理解我的问题,以下是dictionary.csv和file.csv的内容
dictionary.csv
sigmoid colon cancer
site specific early onset breast cancer syndrome
skin cancer
file.csv
id STORY
0 Ari have a colon cancer
1 Cancer is an epidemic
2 Breast cancer can happen to both genders
我应该从这些文件中获得的输出是
clue.csv
id STORY contain diseases1
0 Ari have a colon cancer 1
1 Cancer is an epidemic 1
2 Breast cancer can happen to both genders 1
3 Prioritizing the health of skin 0
4 A specific camping site is only for early birds 0
到目前为止,由于我现在拥有的代码是完全匹配的,所以我一直得到0
答案 0 :(得分:0)
您是否考虑过Fuzzywuzzy python库?它是SeatGeek开源的字符串匹配库。它根据不完全匹配提供匹配分数,然后您确定哪个阈值接近匹配即可。
根据我的经验,我使用它来匹配来自不同数据源的医师姓名(例如,有些说“博士”,有些说“ MD”,有些名字缩写,有些姓由于姓氏而改变)。
这里有2个到图书馆的链接。
https://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/