gensim-word2vec

通過word2vec的“skip-gram和CBOW模型”生成詞向量,使用hierarchical softmax或negative sampling方法。
注意:在Gensim中不止Word2vec可以產(chǎn)生詞向量,詳見Fasttext和wrappers。
初始化模型:

model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)

保存加載模型:

model.save(fname)
model = Word2Vec.load(fname)  # you can continue training with the loaded model!

詞向量存儲在model.wv的KeyedVectors實例中,可以直接在KeyedVectors中查詢詞向量。

model.wv['computer']  # numpy vector of a word
array([-0.00449447, -0.00310097,  0.02421786, ...], dtype=float32)

詞向量也可以被硬盤上已有的C格式文件實例化成KeyedVectors

from gensim.models import KeyedVectors
word_vectors = KeyedVectors.load_word2vec_format('/tmp/vectors.txt', binary=False)  # C text format
word_vectors = KeyedVectors.load_word2vec_format('/tmp/vectors.bin', binary=True)  # C binary format

你可以通過模型執(zhí)行各種NLP任務(wù),有些是內(nèi)置的

>>> model.wv.most_similar(positive=['woman', 'king'], negative=['man'])
[('queen', 0.50882536), ...]

>>> model.wv.most_similar_cosmul(positive=['woman', 'king'], negative=['man'])
[('queen', 0.71382287), ...]


>>> model.wv.doesnt_match("breakfast cereal dinner lunch".split())
'cereal'

>>> model.wv.similarity('woman', 'man')
0.73723527

模型下的文本概率:

>>> model.score(["The fox jumped over a lazy dog".split()])
0.2158356

如果模型訓(xùn)練完成(不再更新),可以在wv中轉(zhuǎn)換gensim.models.KeyedVectors實例來避免不必要的內(nèi)存消耗

>>> word_vectors = model.wv
>>> del model

gensim.models.phrases模塊可以讓你自動檢測短語的詞向量

>>> bigram_transformer = gensim.models.Phrases(sentences)
>>> model = Word2Vec(bigram_transformer[sentences], size=100, ...)

class gensim.models.word2vec.BrownCorpus(dirname )
從布朗語料庫(NLTK數(shù)據(jù)的一部分)迭代句子,dirname是存儲布朗語料庫的根目錄(通過nltk.download()下載布朗語料庫),得到的這個對象可以通過循環(huán)迭代語料庫的句子,如下:
['the/at', 'fulton/np', 'county/nn', 'grand/jj', 'jury/nn', 'said/vb', 'friday/nr', 'an/at', 'investigation/nn', 'of/in', "atlanta's/np", 'recent/jj', 'primary/nn', 'election/nn', 'produced/vb', 'no/at', 'evidence/nn', 'that/cs', 'any/dt', 'irregularities/nn', 'took/vb', 'place/nn']


class gensim.models.word2vec.LineSentence(source, max_sentence_length=10000, limit=None)
與上一樣,也是產(chǎn)生迭代器,但需要更改下文件格式。簡單的格式:一句話=一行; 單詞已經(jīng)過預(yù)處理并由空格分隔。


class gensim.models.word2vec.PathLineSentences(source,max_sentence_length = 10000,limit = None )
與LineSentence類一樣,不過這里是處理根目錄下的所有文件,同樣文件中句子格式需要處理


class gensim.models.word2vec.Text8Corpus(fname,max_sentence_length = 10000 )
從text8語料庫中迭代句子


class gensim.models.word2vec.Word2Vec(sentences=None, size=100, alpha=0.025, window=5, min_count=5, max_vocab_size=None, sample=0.001, seed=1, workers=3, min_alpha=0.0001, sg=0, hs=0, negative=5, cbow_mean=1, hashfxn=<built-in function hash>, iter=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000, compute_loss=False, callbacks=())
一個訓(xùn)練,使用和評估的神經(jīng)網(wǎng)絡(luò)類。如果訓(xùn)練結(jié)束,可以再wv中轉(zhuǎn)換gensim.models.KeyedVectors實例。模型可以通過load()和save()加載和保存,或者通過 wv.save_word2vec_format()和Word2VecKeyedVectors.load_word2vec_format().
用句子的迭代器進行模型初始化,每個句子都是一組詞(unicode)

  • sentence(iterable of iterables):可迭代的句子可以是簡單的list,但對于較大的語料庫,可以考慮直接從磁盤/網(wǎng)絡(luò)傳輸句子的迭代。見BrownCorpus,Text8Corpus 或LineSentence.
  • SG(INT {1 ,0}) -定義的訓(xùn)練算法。如果是1,則使用skip-gram; 否則,使用CBOW。
  • size(int) - 特征向量的維數(shù)。
  • window(int) - 句子中當前詞和預(yù)測詞之間的最大距離。
  • alpha(float) - 初始學(xué)習(xí)率。
  • min_alpha(float) - 隨著訓(xùn)練的進行,學(xué)習(xí)率將線性下降至min_alpha。
  • seed(int) - 隨機數(shù)發(fā)生器的種子。
  • min_count(int) - 忽略總頻率低于此值的所有單詞。
  • max_vocab_size(int) - 在構(gòu)建詞匯表時限制RAM; 如果還有比這更獨特的單詞,那么修剪不常用的單詞。每1000萬字類型需要大約1GB的RAM。無限制設(shè)置為None。
  • sample(float) - 用于配置哪些較高頻率的詞隨機下采樣的閾值,有用范圍是(0,1e-5)
  • worker(int) - 線程
  • hs (int {1,0}) – If 1, hierarchical softmax will be used for model training. If set to 0, negative參數(shù)非零,negative sampling.
  • negative(int) - 如果> 0,將使用negative sampling,int指定應(yīng)繪制多少“噪聲詞”(通常在5-20之間)。如果設(shè)置為0,則不使用負采樣
  • cbow_mean(INT {1 ,0}) -如果為0,使用上下文詞向量的和。如果是1,則使用平均值,僅在使用cbow時適用
    初始化并訓(xùn)練模型
>>> from gensim.models import Word2Vec
>>> sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]
>>>
>>> model = Word2Vec(sentences, min_count=1)
>>> say_vector = model['say']  # get vector for word

build_vocab(sentences, update=False, progress_per=10000, keep_raw_vocab=False, trim_rule=None, **kwargs)
從一系列句子中構(gòu)建詞匯表(可以是一次性的生成器流)。每個句子都是可迭代的iterable(也可以簡單地是一個unicode字符串列表)。


build_vocab_from_freq(word_freq, keep_raw_vocab=False, corpus_count=None, trim_rule=None, update=False)
從詞頻詞典中構(gòu)建詞匯。從包含(單詞,單詞計數(shù))的傳遞字典中構(gòu)建模型詞匯表。單詞必須是類型unicode字符串。

>>> from gensim.models import Word2Vec
>>>
>>> model= Word2Vec()
>>> model.build_vocab_from_freq({"Word1": 15, "Word2": 20})

estimate_memory(vocab_size = None,report = None )
使用當前設(shè)置和提供的詞匯大小估算模型所需的內(nèi)存。


predict_output_word(context_words_list, topn=10)
報告中心詞的概率分布,給定上下文詞作為訓(xùn)練模型的輸入。
context_words_list - 上下文單詞列表
topn(int) - 返回最常用的單詞及其概率
返回:
(單詞,概率)元組的topn長度列表
返回類型:
obj:列表:obj:元組


score(sentences, total_sentences=1000000, chunksize=100, queue_factor=2, report_delay=1)
計算一系列句子的對數(shù)概率


train(sentences, total_examples=None, total_words=None, epochs=None, start_alpha=None, end_alpha=None, word_count=0, queue_factor=2, report_delay=1.0, compute_loss=False, callbacks=())
從一系列句子更新模型的神經(jīng)權(quán)重.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,481評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,697評論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,182評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,406評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,933評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,772評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,973評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評論 1 285
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,644評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,953評論 2 373

推薦閱讀更多精彩內(nèi)容