python - 使用 sklearn 防止在 Python 中多次计算令牌
问题描述
我正在尝试将用户输入的字符串分组到类似的类别中。
考虑以下大学列表:
- 商学院
- 工商管理学院
- 商学院
- 工商管理学院
目前,如果我通过 Python 中的 sklearn 传递它,它会给我以下频率:
- 商业, 4
- 大学业务,2
- 学校业务,2
- 工商管理,2
- 学院,2
- 学校,2
问题是:一旦我将部门汇总到“商业”类别中,我不希望它汇总到“学院”和“学校”类别中。
现在考虑医院的以下科室:
- 血液学和肿瘤学
- 血液学
- 肿瘤学
目前,如果我通过 Python 中的 sklearn 传递它,它会给我以下频率:
- 血液肿瘤学, 1
- 血液学, 2
- 肿瘤学, 2
同样,一旦这个部门被归入最大的类别,我不希望它再次将其归入较小的类别。
所以,我想要的输出是:
- 血液肿瘤学, 1
- 血液学, 1
- 肿瘤学, 1
所以在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
解决方案
推荐阅读
- php - Laravel:如何在多对多关系中使用 where 子句
- c# - 根据第一个参数对函数的第二个参数进行类型检查
- python - 带有 generator.flow_from_directory 的多个 CNN 输入?
- mysql - 书架关联错误
- python - 将 pandas 数据框中的列相加会导致分类索引错误
- hadoop - 如何在没有 CDH 的情况下安装和配置 Hue 来管理 HDFS
- vue.js - vue 将数据挂载到多个 div 或 table
- ruby - double splat 在方法调用中的作用是什么?
- python - Selenium:当我打印()时单击()不起作用,当我注释掉打印()时调用错误
- angular - Angular 2 应用程序可在工作计算机上运行,而家用计算机则无法正常运行