7

nltk.ConditionalFreqDistによって生成されたテーブルを操作しようとしていますが、テーブルをcsvファイルに書き込むか、他の形式にエクスポートするかについてのドキュメントが見つからないようです。パンダのデータフレームオブジェクトで操作したいのですが、これもcsvへの書き込みが非常に簡単です。私が見つけた唯一のスレッドは、CFDオブジェクトをピクルスにすることをお勧めしますが、これは私の問題を実際には解決しません。

nltk.ConditionalFreqDistオブジェクトをpd.DataFrameに変換するために、次の関数を作成しました。

def nltk_cfd_to_pd_dataframe(cfd):
    """ Converts an nltk.ConditionalFreqDist object into a pandas DataFrame object. """

    df = pd.DataFrame()
    for cond in cfd.conditions():
        col = pd.DataFrame(pd.Series(dict(cfd[cond])))
        col.columns = [cond]
        df = df.join(col, how = 'outer')

    df = df.fillna(0)

    return df

しかし、それを行う場合は、最初にpd.DataFrameを生成する新しいConditionalFreqDist関数を作成するのが理にかなっているかもしれません。しかし、車輪の再発明を行う前に、NLTKやその他の場所で、ConditionalFreqDistオブジェクトを他の形式と通信させ、最も重要なこととしてcsvファイルにエクスポートするためのトリックがないかどうかを確認したいと思いました。

ありがとう。

4

4 に答える 4

5
pd.DataFrame(freq_dist.items(), columns=['word', 'frequency'])
于 2019-12-12T17:32:39.830 に答える
2

nltk.ConditionalFreqDistでは、関数のようなタプルのリストを取得し、pandas Dataframe オブジェクトを返す条件付き度数分布関数を作成しました。cfd オブジェクトをデータフレームに変換するよりも高速に動作します。

def cond_freq_dist(data):
    """ Takes a list of tuples and returns a conditional frequency distribution as a pandas dataframe. """

    cfd = {}
    for cond, freq in data:
        try:
            cfd[cond][freq] += 1
        except KeyError:
            try:
                cfd[cond][freq] = 1
            except KeyError:
                cfd[cond] = {freq: 1}

    return pd.DataFrame(cfd).fillna(0)
于 2013-03-03T00:19:29.107 に答える