【问题标题】:How to make term frequency matrix in python如何在python中制作词频矩阵
【发布时间】:2019-05-06 06:21:55
【问题描述】:

我正在处理一个情感分析问题,我必须准备一个文档频率矩阵。例如,我有三个带有情绪的词(数据)

他是个好人 |积极意义

他是个坏学生 |负意义

他很努力 |积极意义

唯一词汇表中有以下单词。

他是一个好人,坏人,学生,勤奋

根据词汇和数据,我将在下面给出 3X8 矩阵

对于第一句:1,1,1,1,1,0,0,0

对于第二句:1,1,0,0,0,1,1,0

第三句:1,1,0,0,0,0,0,1

请提出任何最好和最有效的方法来在 python 中实现这一点。

【问题讨论】:

    标签: python-3.x machine-learning


    【解决方案1】:

    这是get_dummies 的问题,为了实现你所需要的,你只需要关注reindex

    s='He,is,a,good,person,bad,student,hardworking'.split(',')
    df.W1.str.get_dummies(sep=' ').reindex(columns=s)
    Out[914]: 
       He  is  a  good  person  bad  student  hardworking
    0   1   1  1     1       1    0        0            0
    1   1   1  0     0       0    1        1            0
    2   1   1  0     0       0    0        0            1
    

    数据输入

                        W1               W2
    0  He is a good person     Positive Sense
    1  He is bad student       Negative Sense
    2  He is hardworking       Positive Sense
    

    【讨论】:

    • 如果句子中有重复的单词会怎样?
    • @DanielMesejo 将返回 1
    【解决方案2】:

    既然你用machine-learning标记了这个问题,我建议你使用sklearn.CountVectorizer

    import pandas as pd
    from sklearn.feature_extraction.text import CountVectorizer
    
    corpus = ['He is a good person',
              'He is bad student',
              'He is hardworking']
    df = pd.DataFrame(data=corpus, columns=['sentences'])
    
    vectorizer = CountVectorizer(vocabulary=['he', 'is', 'a', 'good', 'person', 'bad', 'student', 'hardworking'], min_df=0,
                                 stop_words=frozenset(), token_pattern=r"(?u)\b\w+\b")
    X = vectorizer.fit_transform(df['sentences'].values)
    result = pd.DataFrame(data=X.toarray(), columns=vectorizer.get_feature_names())
    print(result)
    

    输出

       he  is  a  good  person  bad  student  hardworking
    0   1   1  1     1       1    0        0            0
    1   1   1  0     0       0    1        1            0
    2   1   1  0     0       0    0        0            1
    

    【讨论】:

    • 如果没有这个库怎么办?如果我有一个标记为正面或负面的单词的文档,您能否进一步建议如何将此文档转换为转频矩阵。?
    • 您能否具体说明一下文档的格式?
    • 文档有两列,一列是情绪,另一列是我要准备术语文档的单词。
    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多