直方图表示序列中的取代,插入和缺失的数量

时间:2017-08-01 09:21:55

标签: python dictionary matplotlib nltk distance

l有两列代表:右序列和预测序列。我想通过比较每个正确的序列和预测的序列来统计删除,替换和插入的数量。

l使用levenstein距离来获得不同的字符数(参见下面的函数)和error_dist函数以获得最常见的错误(就替换而言):

这是我的数据样本:

de               de
date            date
pour             pour
etoblissemenls  etablissements
avec           avec
code           code
communications  communications
r               r
seiche          seiche
titre           titre
publiques      publiques
ht             ht
bain           bain
du             du
ets            ets
premier        premier
dans           dans
snupape        soupape
minimum        minimum
blanc          blanc
fr             fr
nos            nos
au             au
bl             bl
consommations   consommations
somme           somme
euro            euro
votre           votre
offre           offre
forestier       forestier
cs              cs
de              de
pour            pour
de              de
paye            r
cette           cette
votre           votre
valeurs         valeurs
des             des
gfda            gfda
tva             tva
pouvoirs        pouvoirs
de              de
revenus         revenus
offre           offre
ht              ht
card            card
noe             noe
montant         montant
r               r
comprises   comprises
quantite    quantite
nature       nature
ticket       ticket
ou           ou
rapide      rapide
de          de
sous        sous
identification  identification
du               du
document      document
suicide      suicide
bretagne     bretagne
tribunal    tribunal
services    services
cif           cif
moyen         moyen
gaec         gaec
total         total
lorsque     lorsque
contact     contact
fermeture   fermeture
la           la
route        route
tva          tva
ia           ia
noyal       noyal
brie        brie
de          de
nanterre    nanterre
charcutier  charcutier
semestre    semestre
de  de
rue rue
le  le
bancaire    bancaire
martigne    martigne
recouvrement    recouvrement
la  la
sainteny    sainteny
de  de
franc   franc
rm  rm
vro vro

这是我的代码

import pandas as pd
import collections
import numpy as np
import matplotlib.pyplot as plt
import distance

def error_dist():
    df = pd.read_csv('data.csv', sep=',')
    df = df.astype(str)
    df = df.replace(['é', 'è', 'È', 'É'], 'e', regex=True)
    df = df.replace(['à', 'â', 'Â'], 'a', regex=True)
    dictionnary = []
    for i in range(len(df)):
        if df.manual_raw_value[i] != df.raw_value[i]:
            text = df.manual_raw_value[i]
            text2 = df.raw_value[i]
            x = len(df.manual_raw_value[i])
            y = len(df.raw_value[i])
            z = min(x, y)
            for t in range(z):
                if text[t] != text2[t]:
                    d = (text[t], text2[t])
                    dictionnary.append(d)
                    #print(dictionnary)

    dictionnary_new = dict(collections.Counter(dictionnary).most_common(25))

    pos = np.arange(len(dictionnary_new.keys()))
    width = 1.0

    ax = plt.axes()
    ax.set_xticks(pos + (width / 2))
    ax.set_xticklabels(dictionnary_new.keys())

    plt.bar(range(len(dictionnary_new)), dictionnary_new.values(), width, color='g')

    plt.show()

enter image description here

和levenstein距离:

def levenstein_dist():
    df = pd.read_csv('data.csv', sep=',')
    df=df.astype(str)
    df['string diff'] = df.apply(lambda x: distance.levenshtein(x['raw_value'], x['manual_raw_value']), axis=1)
    plt.hist(df['string diff'])
    plt.show()

enter image description here

现在我想制作一个显示三个箱的直方图:替换数,插入数和删除数。我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:1)

感谢@YohanesGultom的建议,可以在这里找到问题的答案:

http://www.nltk.org/_modules/nltk/metrics/distance.html

https://gist.github.com/kylebgorman/1081951