首页 > 解决方案 > 使用 sklearn 防止在 Python 中多次计算令牌

问题描述

我正在尝试将用户输入的字符串分组到类似的类别中。

考虑以下大学列表:

目前,如果我通过 Python 中的 sklearn 传递它,它会给我以下频率:

问题是:一旦我将部门汇总到“商业”类别中,我不希望它汇总到“学院”和“学校”类别中。

现在考虑医院的以下科室:

目前,如果我通过 Python 中的 sklearn 传递它,它会给我以下频率:

同样,一旦这个部门被归入最大的类别,我不希望它再次将其归入较小的类别。

所以,我想要的输出是:

所以在sklearn在“血液学肿瘤学”中计算部门之后,我不希望它在“血液学”和“肿瘤学”下第二次计算它

我很难做到这一点。这是我目前正在做的事情:

from sklearn.feature_extraction.text import CountVectorizer
word_vectorizer = CountVectorizer(ngram_range=(1,5), analyzer='word', stop_words='english')
sparse_matrix = word_vectorizer.fit_transform(user_departments['MyToken'].fillna(value='None'))
frequencies = sum(sparse_matrix).toarray()[0]
skwords = pd.DataFrame(frequencies, index=word_vectorizer.get_feature_names(), columns=['frequency'])

根据要求(根据评论),初始列表是:

Hematology and Oncology
Hematology
Oncology
College of Business
College of Business Administration
Business School
School of Business Administration

整个数据集的期望结果类似于:

Business, 4
hematology oncology, 1
hematology, 1
oncology, 1

标签: pythonpython-3.xscikit-learn

解决方案


推荐阅读