NLP基礎(chǔ):NNLM模型代碼示例

原文鏈接:NLP基礎(chǔ):NNLM模型代碼示例


導(dǎo)讀:在NLP基礎(chǔ):NNLM模型介紹中,已經(jīng)介紹了NNLM模型原理,通過(guò)對(duì)網(wǎng)上已發(fā)布的代碼進(jìn)行完善并標(biāo)注,進(jìn)行模型代碼示例展示。

Keras實(shí)現(xiàn)

代碼主要部分如下:

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

from keras.models import Sequential

import numpy as np

import tensorflow as tf

import re

sentences = [ "我渴了", "你真好", "他的錯(cuò)", "對(duì)不起" , "他走了"]

# NNLM Parameter

n_step = len(sentences[0])-1 # number of steps ['我 渴', '你 真', '他 的', '對(duì) 不', '他 走']

#分字

def seg_char(sent):

? ? pattern = re.compile(r'([\u4e00-\u9fa5])')

? ? chars = pattern.split(sent)

? ? chars =[w for w in chars if len(w.strip()) > 0]

? ? return chars

#得到每個(gè)句子前n-1個(gè)詞和目標(biāo)詞

chars=np.array([seg_char(i)for i in sentences])

chars=chars.reshape(1,-1)

word_list=np.squeeze(chars)

#['我' '渴' '了' '你' '真' '好' '他' '的' '錯(cuò)' '對(duì)' '不' '起' '他' '走' '了']

word_list = list(set(word_list))

word_dict = {w: i for i, w in enumerate(word_list)}

#{'渴': 0, '錯(cuò)': 1, '不': 2, '好': 3, '起': 4, '他': 5, '對(duì)': 6, '你': 7, '走': 8, '我': 9, '了': 10, '的': 11, '真': 12}

number_dict = {i: w for i, w in enumerate(word_list)}

#{0: '渴', 1: '錯(cuò)', 2: '不', 3: '好', 4: '起', 5: '他', 6: '對(duì)', 7: '你', 8: '走', 9: '我', 10: '了', 11: '的', 12: '真'}

n_class = len(word_dict) # number of Vocabulary

#這里通過(guò)one-hot進(jìn)行詞向量生成

#one-hot轉(zhuǎn)換

def make_batch(sentences):

? ? input_batch = []

? ? target_batch = []

? ? for sen in sentences:

? ? ? ? #將每個(gè)句子中的字轉(zhuǎn)化為下標(biāo)表示

? ? ? ? word = seg_char(sen)

? ? ? ? input = [word_dict[n] for n in word[:-1]]

? ? ? ? target = word_dict[word[-1]]


? ? ? ? #one-hot轉(zhuǎn)換

? ? ? ? input_batch.append(np.eye(n_class)[input])

? ? ? ? target_batch.append(np.eye(n_class)[target])

? ? return input_batch, target_batch

input_batch, target_batch=make_batch(sentences)

input_batch=np.array(input_batch)

#將輸入詞向量進(jìn)行首尾拼接

input_batch=input_batch.reshape(-1,n_step*n_class)

target_batch=np.array(target_batch)

target_batch=target_batch.reshape(-1,n_class)

from keras.layers import Dense

import keras

#建立模型,本模型暫不包含直連邊

def define_model():

? ? model = Sequential()

? ? #Dense為全連接網(wǎng)絡(luò)

? ? model.add(Dense(2,activation='tanh',input_shape=(n_step*n_class,))) # 輸入層

? ? model.add(Dense(n_class, activation='softmax'))? # 輸出層

? ? model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

? ? model.summary()

? ? return model

#訓(xùn)練模型

model=define_model()

model.fit(input_batch, target_batch, epochs=2000)#訓(xùn)練2000輪,數(shù)據(jù)少啦,一兩輪沒(méi)效果

#預(yù)測(cè)測(cè)試

predict=model.predict(input_batch)

predict=np.argmax(predict,1)#求取最大值索引

print('輸入的是:',[seg_char(sen)[:2] for sen in sentences])

print('預(yù)測(cè)得到:',[number_dict[n] for n in predict])

得到結(jié)果如下:

點(diǎn)擊原文:NLP基礎(chǔ):NNLM模型代碼示例回復(fù)“NNLM”可獲取全部代碼

參考文章:https://blog.csdn.net/kobeyu652

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

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