是否有任何解决方案可以将原始数据转换为一些分类数据集

问题描述

我有一个数据集,其中包含 hindihindi、hendi、English、Englsh、inglish、inglsh...等值。我希望这个数据集分成不同的数据集,这些数据集将具有类似的值。例如在这种情况下有两个数据集;第一个是具有印地语、印地语、hendi 的值,另一个包含英语、英语、英语、inglsh。

解决方法

您可以使用difflib.get_close_matches

输入:

>>> s = pd.Series(['Hindi','hindi','hendi','English','Englsh','inglish','inglsh'])
>>> s
0   Hindi
1   hindi
2   hendi
3   English
4   Englsh
5   inglish
6   inglsh

处理:

import difflib
s.apply(lambda s: difflib.get_close_matches(s,possibilities=['english','hindi'])[0])

输出:

0   hindi
1   hindi
2   hindi
3   english
4   english
5   english
6   english
,

假设唯一值很小且已知,您可以尝试对具有所有唯一值的单词进行评分,并将该单词分配给唯一值得分最高的数据集。

您可以在此处尝试多种评分机制,例如 Levenshtein 距离。

例如:

dataset = ['hindi','hundi','english','englesh']
unique_values = ['hindi','english']

segregated_dataset = {'hindi': [],'english': []}

for val in dataset:
    max_score = 0
    for unique_val in unique_values:
        score = scoring_function(val,unique_val) # implement the scoring function of your choice
        if score > max_score:
            field = unique_val
            max_score = score
            
    segregated_dataset[field].append(val)
,

由于不知道正确的必填单词集,因此您的问题的一个可能答案可能是 this question

最好使用 numpy.char.lower(list_of_word)

将您的单词转换为小写

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...