Exemplo n.º 1
0
def errorCurvePotinFiveByAnnotation(talkSeries):
    ma = MimiAnalyser('data/test_data_extremelyPure.csv')

    errorV1 = pd.Series()
    countV1 = pd.Series()

    errorA1 = pd.Series()
    countA1 = pd.Series()

    for talk, sentencesInTalk in talkSeries.iteritems():
        dfAudioV = ma.get_V_FrameByTalk(talk, 'Audio')
        dfAudioA = ma.get_A_FrameByTalk(talk, 'Audio')

        aveAudioV = dfAudioV.apply(np.mean, axis=0)
        aveAudioA = dfAudioA.apply(np.mean, axis=0)

        dfTextV = ma.get_V_FrameByTalk(talk, 'text')
        dfTextA = ma.get_A_FrameByTalk(talk, 'text')

        aveTextV = dfTextV.apply(np.mean, axis=0)
        aveTextA = dfTextA.apply(np.mean, axis=0)
        for i in sentencesInTalk:
            d = pointFive(aveAudioV[i])
            eV = errorV1
            cV = countV1
            if eV.get(d) == None:
                cV.at[d] = 1
                eV.at[d] = np.abs(d - pointFive(aveTextV[i]))
            else:
                cV.at[d] += 1
                eV.at[d] += np.abs(d - pointFive(aveTextV[i]))

        for i in sentencesInTalk:
            d = pointFive(aveAudioA[i])
            eA = errorA1
            cA = countA1
            if eA.get(d) == None:
                cA.at[d] = 1
                eA.at[d] = np.abs(d - pointFive(aveTextA[i]))
            else:
                cA.at[d] += 1
                eA.at[d] += np.abs(d - pointFive(aveTextA[i]))

    eV = eV.div(cV).sort_index()
    cV = cV.sort_index()
    eA = eA.div(cA).sort_index()
    cA = cA.sort_index()

    errorArray = [eV, eA]
    countArray = [cV, cA]

    for index, countSeries in enumerate(countArray):
        for label, count in countSeries.iteritems():
            if count < 1:
                countArray[index] = countArray[index].drop(label)
                errorArray[index] = errorArray[index].drop(label)

    return [errorArray[0], errorArray[1], countArray[0], countArray[1]]
Exemplo n.º 2
0
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mimicry_analyser import MimiAnalyser

ma = MimiAnalyser('data/test_data_filtered.csv')
ma.plotTalkError(3, 'text')
ma.plotTalkError(3, 'Fumoji')
Exemplo n.º 3
0
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mimicry_analyser import MimiAnalyser

ma = MimiAnalyser('data/test_data_filtered.csv')
THE_TALK = 13

dfAudioV = ma.get_V_FrameByTalk(THE_TALK, 'Audio')
dfAudioA = ma.get_A_FrameByTalk(THE_TALK, 'Audio')

aveAudioV = dfAudioV.apply(np.mean, axis=0)
aveAudioA = dfAudioA.apply(np.mean, axis=0)

dfTextV = ma.get_V_FrameByTalk(THE_TALK, 'text')
dfTextA = ma.get_A_FrameByTalk(THE_TALK, 'text')

aveTextV = dfTextV.apply(np.mean, axis=0)
aveTextA = dfTextA.apply(np.mean, axis=0)

dfFumojiV = ma.get_V_FrameByTalk(THE_TALK, 'Fumoji')
dfFumojiA = ma.get_A_FrameByTalk(THE_TALK, 'Fumoji')

aveFumojiV = dfFumojiV.apply(np.mean, axis=0)
aveFumojiA = dfFumojiA.apply(np.mean, axis=0)

data = {
    "aveAudioV": aveAudioV.values,
    "aveFumojiV": aveFumojiV.values,
    "aveTextV": aveTextV.values
}
Exemplo n.º 4
0
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mimicry_analyser import MimiAnalyser

ma = MimiAnalyser('data/test_data_pure.csv')
THE_TALK = 12

dfAudioV = ma.get_V_FrameByTalk(THE_TALK, 'audio')
dfAudioA = ma.get_A_FrameByTalk(THE_TALK, 'audio')

averageV = dfAudioV.apply(np.mean, axis=0)
averageA = dfAudioA.apply(np.mean, axis=0)

quadrantV = ma.getQuadrant(dfAudioV)
quadrantA = ma.getQuadrant(dfAudioA)

averageQV = quadrantV.apply(np.mean, axis=0)
averageQA = quadrantA.apply(np.mean, axis=0)

correctionQV = []
correctionQA = []

for index, r in dfAudioV.iterrows():
    correctionQV.append(ma.quadrantCorrection(averageQV, r))
for index, r in dfAudioA.iterrows():
    correctionQA.append(ma.quadrantCorrection(averageQA, r))

quadrantCorrectionV = pd.Series(correctionQV,
                                index=ma.user_id[THE_TALK - 2]).sort_values()
quadrantCorrectionA = pd.Series(correctionQA,
Exemplo n.º 5
0
def errorCurvePotinFive():
    ma = MimiAnalyser('data/test_data_extremelyPure.csv')

    errorV1 = pd.Series()
    countV1 = pd.Series()

    errorV2 = pd.Series()
    countV2 = pd.Series()

    errorA1 = pd.Series()
    countA1 = pd.Series()

    errorA2 = pd.Series()
    countA2 = pd.Series()

    for talk in ma.talk_id:
        dfAudioV = ma.get_V_FrameByTalk(talk, 'Audio')
        dfAudioA = ma.get_A_FrameByTalk(talk, 'Audio')

        aveAudioV = dfAudioV.apply(np.mean, axis=0)
        aveAudioA = dfAudioA.apply(np.mean, axis=0)

        dfTextV = ma.get_V_FrameByTalk(talk, 'text')
        dfTextA = ma.get_A_FrameByTalk(talk, 'text')

        aveTextV = dfTextV.apply(np.mean, axis=0)
        aveTextA = dfTextA.apply(np.mean, axis=0)

        for i in range(aveAudioV.size):
            d = pointFive(aveAudioV[i])
            if aveAudioA[i] < 0:
                eV = errorV1
                cV = countV1
            elif aveAudioA[i] > 0:
                eV = errorV2
                cV = countV2
            if eV.get(d) == None:
                cV.at[d] = 1
                eV.at[d] = np.abs(d - pointFive(aveTextV[i]))
            else:
                cV.at[d] += 1
                eV.at[d] += np.abs(d - pointFive(aveTextV[i]))

        for i in range(aveAudioA.size):
            d = pointFive(aveAudioA[i])
            if aveAudioV[i] < 0:
                eA = errorA1
                cA = countA1
            elif aveAudioV[i] > 0:
                eA = errorA2
                cA = countA2
            if eA.get(d) == None:
                cA.at[d] = 1
                eA.at[d] = np.abs(d - pointFive(aveTextA[i]))
            else:
                cA.at[d] += 1
                eA.at[d] += np.abs(d - pointFive(aveTextA[i]))

    errorV1 = errorV1.div(countV1).sort_index()
    countV1 = countV1.sort_index()
    errorA1 = errorA1.div(countA1).sort_index()
    countA1 = countA1.sort_index()
    errorV2 = errorV2.div(countV2).sort_index()
    countV2 = countV2.sort_index()
    errorA2 = errorA2.div(countA2).sort_index()
    countA2 = countA2.sort_index()

    errorArray = [errorV1, errorV2, errorA1, errorA2]
    countArray = [countV1, countV2, countA1, countA2]

    for index, countSeries in enumerate(countArray):
        for label, count in countSeries.iteritems():
            if count < 3:
                countArray[index] = countArray[index].drop(label)
                errorArray[index] = errorArray[index].drop(label)

    data = {
        'when Arousal < 0': errorArray[0],
        'when Arousal > 0': errorArray[1]
    }
    ma.plotDict(data, 'error of Valence')

    data = {
        'when Valence < 0': errorArray[2],
        'when Valence > 0': errorArray[3]
    }
    ma.plotDict(data, 'error of Arousal')
Exemplo n.º 6
0
    plt.legend()
    plt.show()

    # plt.figure(figsize=(8, 6), dpi=80)
    # plt.title(title+' Arousal')
    # plt.plot(group1[1], label = groupLabel1 + 'Arousal')
    # plt.plot(group2[1], label = groupLabel2 + 'Arousal')
    # barWidth = 0.1

    # plt.bar(male[3].index - barWidth*0.5, male[3].div(100).values, barWidth, label = groupLabel1+'Count/100')
    # plt.bar(female[3].index + barWidth*0.5, female[3].div(100).values, barWidth, label = groupLabel2+'Count/100')
    # plt.legend()
    # plt.show()


ma = MimiAnalyser('data/test_data_filtered.csv')
a = Annotation()

errorCurvePotinFive()

# series_maleSpeakers = a.getTalkSentenceByAnnotation('说话人性别','男')
# series_femaleSpeakers = a.getTalkSentenceByAnnotation('说话人性别','女')
# male = errorCurvePotinFiveByAnnotation(series_maleSpeakers)
# female = errorCurvePotinFiveByAnnotation(series_femaleSpeakers)

# genderGroupV = {'male':male[0], 'female':female[0]}
# genderGroupVCount = {'male':male[2], 'female':female[2]}
# plotGroup(genderGroupV, genderGroupVCount,'genderGroupValence')

# genderGroupA = {'male':male[1], 'female':female[1]}
# genderGroupACount = {'male':male[3], 'female':female[3]}
Exemplo n.º 7
0
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mimicry_analyser import MimiAnalyser

ma = MimiAnalyser('data/test_data_pure.csv')

#talk : 2-13
talk_length = [52, 22, 9, 11, 30, 45, 4, 19, 10, 32, 43, 19]

data = pd.read_csv('data/test_data_pure.csv')

text_data = data[data['Type'] == 'text']
fumoji_data = data[data['Type'] == 'Fumoji']
audio_data = data[data['Type'] == 'Audio']

fumoji_valence_error = [{} for i in range(12)]
text_valence_error = [{} for j in range(12)]

# def array2Dic(array):
#     dic = {}
#     for i in array:
#         dic[i[0]] = i[1]
#     return dic
#
# def cal_error_abs(a,b):
#     result = 0
#     if(len(a) == len(b) and len(a) > 0):
#         for (key,item) in a.items():
#             result += np.abs(item - b[key])
#         return float(result / len(a))