2017-06-17 101 views
0

我有標題的列表:無法記號化使用gensim和句子NLTK在Python

> print(data) 
> 
    0 Manager 
    1 Electrician 
    3 Carpenter 
    4 Electrician & Carpenter 
    ... 

我試圖用gensim找到最接近的相關商品。

我的代碼是:

import os 
import pandas as pd 
import nltk 
import gensim 
from gensim import corpora, models, similarities 
from nltk.tokenize import word_tokenize 

df = pd.read_csv('df.csv') 
corpus = pd.DataFrame(df, columns=['Job Title']) 
tokenized_sents = [word_tokenize(i) for i in corpus] 

model = gensim.models.Word2Vec(tokenized_sents, min_count=1) 

model.most_similar("Electrician") 

當我運行標記化來標記每個標題作爲一個句子(tokenized_sents變量),它只是標記化的標題:

> tokenzied_sents 
> [['Job', 'Title']] 

我是什麼做錯了?

回答

0

當我們通過遍歷pd.DataFrame,它返回它的

In [9]: df = pd.DataFrame(np.random.randint(0,10, (10,3)), columns=list('abc')) 

In [10]: df 
Out[10]: 
    a b c 
0 0 7 3 
1 5 0 5 
2 7 7 9 
3 2 0 0 
4 6 9 2 
5 8 5 2 
6 5 0 2 
7 3 2 5 
8 4 8 6 
9 0 5 1 

In [11]: [c for c in df] 
Out[11]: ['a', 'b', 'c'] 

我想你可能想:

[word_tokenize(i) for i in corpus['Job Title']] 

由於要遍歷值列'Job Title' ,所以:

In [12]: [c for c in df['a']] 
Out[12]: [0, 5, 7, 2, 6, 8, 5, 3, 4, 0] 

In [13]: [c + 10 for c in df['a']] 
Out[13]: [10, 15, 17, 12, 16, 18, 15, 13, 14, 10] 

雖然,你可能完全免費使用pandas,因爲gensim傾向於使用惰性流,並且您只是使用pandas來讀取csv文件,據我所知。

+0

我能夠然而,利用語料庫[「職務」] [I]迭代,當時我正在給model.most_similar(「經理」),我得到一個錯誤「字‘產品經理’沒有詞彙」 。我在哪裏指定詞彙? –