我有一个包含大量患者诊断信息的表。我想确定这些诊断中最常见的分组是什么,例如是“肿头综合征”和“松舌”,还是“破风”,“慢性鼻毛”和“波纹脚踝”...或一些其它组合。
数据的结构是这样的:
import pandas as pd
import numpy as np
# List of ids
ids = ['id1', 'id2', 'id3','id4','id5']
# List of sample sentences
diagnosis = ["Broken Wind","Chronic Nosehair","Corrugated Ankles","Discrete Itching"]
# Create dataframe
df = pd.DataFrame({'id': ids})
# Generate list of sentences for each id
df['diagnosis'] = df['id'].apply(lambda x: np.random.choice(diagnosis, 5).tolist())
# Explode into separate rows
df = df.explode('diagnosis')
print(df)
例如,如果id2
和id5
都包含"Broken Wind" and Chronic Nosehair"
,则该组合为2。如果id1, id3 and id4
包含"Chronic Nosehair","Corrugated Ankles", and "Discrete Itching"
,则该组合为3。
目的是确定哪种组合最常见。
我想知道是否有一个nlp库,比如NLTK
,或者一个方法,可以用来处理像这样存储在pandas dataframe中的数据?到目前为止,我所能找到的大部分都是面向情感分析或分析单个单词而不是短语的...
1条答案
按热度按时间vbopmzt11#
我想说的是,你在这里试图做的不一定是一个NLP问题,而是一个更一般的frequent pattern mining问题,通常在推荐中看到。
通过使用fpgrowth algorithm in the mlxtend library并查看对每个症状或其组合的支持,您可以找到任何大小的最常见诊断组合:
结果表是一个元组列表,其中
support
是发生组合的“事务”(这里是患者)的百分比: