2017-12-12 8 views
0

私はtitleという名前のフィールドを持つMongoDBにいくつかのアイテムを持っていますが、ここではこれに焦点を当てます。私が最もよく使われる言葉に、全体の時間を取得したいパンダのデータフレームを使ったnGram周波数

は、例えば、期待される結果は、だから私は、その後バープロットをレンダリングして物事を見ることができます

{ 
    "christmas 2017": 30, 
    "foo bar": 4, 
    "apple iphone": 10, 
    ... 
} 

だろう私のコードで私は「これを行うことができます'しかし、それはまた、私は欲しくない、ただ1回の頻度でngramsを与えます。なぜなら、それらは一度も使われていないので、役に立たない情報なのです。

これは、タイトルの中で最も一般的な単語を取得することです.1つは十分ではなく、3つ以上があまりにも明確であるため、良いngramの範囲は2-3ワードになると思います。

この

が働いている私のコードですが、私はバーが描かれていることは言うまでもない

vector = CountVectorizer(ngram_range=(2,2), analyzer='word') 
n_gram = vectorizer.fit_transform(df[text_field]) 
frequencies = n_gram.toarray().sum(axis=0) 
results = pd.DataFrame(frequencies, index=vectorizer.get_feature_names(), columns=['frequency']) 
results.plot.bar() 

を(これを達成するために、多分も良い方法)非繰り返し物事の乗り心地を取得する方法が必要です、無関係の膨大な情報(周波数が1つのもの)

このコードでは、これを使ってdescriptionのような長いテキストフィールドを解析するので、最もよく使われるリストを取得する必要があります中古品。

私がスクリプトに最低限の繰り返し頻度を伝えることができれば、これはすばらしいことになるので、将来必要になる可能性があります。

答えて

0

これは、nGramsを入手した後に役立ちます。

nG=["apple iphone","apple iphone","apple iphone","apple iphone", "christmas 2017","christmas 2017","apple iphone","apple iphone", "foo bar","christmas 2017","christmas 2017","christmas 2017","christmas 2017","apple iphone"] from collections import Counter import heapq nG=Counter(nG) ng

出力:

Counter({'apple iphone': 7, 'christmas 2017': 6, 'foo bar': 1})

別のコマンド:

heapq.nlargest(5,nG,key=nG.get)

出力:

['apple iphone', 'christmas 2017', 'foo bar']

+0

元のスクリプトのように、dict '{" apple iphone ":7}'の代わりにnGrams> xのリストを出力するにはどうすればいいですか?["apple iphone"] '欲しい結果はそれらの情報を含むプロットなので –