日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

詩(shī)歌接龍:用Python實(shí)現(xiàn)古詩(shī)續(xù)寫(xiě)的NLP項(xiàng)目全解析

詩(shī)歌接龍:用Python實(shí)現(xiàn)古詩(shī)續(xù)寫(xiě)的NLP項(xiàng)目全解析 簡(jiǎn)介面向NLP入門(mén)與Python實(shí)踐者的詩(shī)歌接龍項(xiàng)目完整代碼包聚焦中文分詞、詞性標(biāo)注、拼音轉(zhuǎn)換、押韻規(guī)則匹配及網(wǎng)絡(luò)爬蟲(chóng)等核心環(huán)節(jié)適合希望通過(guò)完整實(shí)戰(zhàn)案例理解自然語(yǔ)言處理流程的學(xué)生與開(kāi)發(fā)者。壓縮包共17個(gè)文件主要包含Python源碼、jieba/pypinyin等庫(kù)的依賴說(shuō)明、預(yù)訓(xùn)練數(shù)據(jù)文件、可執(zhí)行程序、txt說(shuō)明文檔及docx詳細(xì)設(shè)計(jì)文檔其中docx對(duì)項(xiàng)目背景、模塊設(shè)計(jì)與調(diào)用流程做了系統(tǒng)說(shuō)明整體大小僅5.86MB輕量便于快速部署。已有496人學(xué)習(xí)瀏覽。項(xiàng)目中除基礎(chǔ)爬蟲(chóng)與文本處理外還提供了基于規(guī)則與統(tǒng)計(jì)方法的接龍算法實(shí)現(xiàn)并附有項(xiàng)目目標(biāo)、實(shí)現(xiàn)過(guò)程與使用方法能幫助讀者從分詞、音韻匹配到算法調(diào)優(yōu)獲得完整實(shí)戰(zhàn)閉環(huán)適合作為課程設(shè)計(jì)或NLP入門(mén)練習(xí)的參考。1. 詩(shī)歌接龍是什么一個(gè)讓Python寫(xiě)詩(shī)的下一個(gè)字的NLP項(xiàng)目“詩(shī)歌接龍”聽(tīng)起來(lái)像語(yǔ)文課上的游戲但落到程序里它其實(shí)是NLP自然語(yǔ)言處理里最典型的序列生成任務(wù)用戶給出一句詩(shī)或半句詩(shī)程序需要預(yù)測(cè)下一個(gè)字甚至把后面的詩(shī)續(xù)完。用Python實(shí)現(xiàn)這樣一個(gè)項(xiàng)目意味著你要走完中文語(yǔ)料清洗、序列建模、概率采樣、結(jié)果評(píng)估的完整鏈路。它的難度比文本分類高一檔但比從頭做對(duì)話機(jī)器人低很多特別適合用來(lái)檢驗(yàn)?zāi)銓?duì)Python字符串處理、數(shù)據(jù)結(jié)構(gòu)和簡(jiǎn)單模型的掌握程度。你做出來(lái)的東西也不是那種跑完loss就扔掉的玩具——它能把“床前明月光”續(xù)成“地上鞋兩雙”也能在調(diào)好參數(shù)后生成像模像樣的五言句。這個(gè)項(xiàng)目適合誰(shuí)剛學(xué)完P(guān)ython基礎(chǔ)、想找?guī)谋緢?chǎng)景的項(xiàng)目練手的人或者已經(jīng)在用n-gram做關(guān)鍵詞提取、想跨進(jìn)生成式NLP的人。接下來(lái)我按自己實(shí)際做過(guò)的思路把這條路上的選型、代碼、參數(shù)和坑一次講清。2. 先想清楚接龍的數(shù)學(xué)邏輯從n-gram到序列模型的選型思路2.1 詩(shī)歌接龍不是在寫(xiě)詩(shī)是在預(yù)測(cè)下一個(gè)字很多人第一次做詩(shī)歌接龍腦子里想的是“讓AI學(xué)會(huì)作詩(shī)”于是直接上GPT。但真正的第一步是把問(wèn)題簡(jiǎn)化成條件概率給定前文“床前明月”下一個(gè)字是“光”的概率是多少如果模型能算出候選字在給定上下文下的概率分布那么接龍就變成一個(gè)采樣問(wèn)題——按概率分布挑一個(gè)字然后把它拼到輸入末尾繼續(xù)預(yù)測(cè)下一個(gè)字。這個(gè)思維決定了技術(shù)路線。詩(shī)歌接龍的輸入輸出都是字符序列本質(zhì)是語(yǔ)言模型Language Model。語(yǔ)言模型做的事就是最大化序列概率 P(text) P(w1) * P(w2|w1) * ... * P(wN|w1..wN-1)。而接龍只要計(jì)算 P(下一個(gè)字 | 當(dāng)前已生成序列)所以訓(xùn)練的樣本就是“給定前面N個(gè)字預(yù)測(cè)第N1個(gè)字”。這個(gè)視角統(tǒng)一了所有后續(xù)做法n-gram里的轉(zhuǎn)移概率表、LSTM里的softmax輸出、Transformer里的自回歸解碼全部是在求這個(gè)條件分布。這里要強(qiáng)調(diào)一個(gè)容易被新手搞混的點(diǎn)接龍其實(shí)不需要先分詞。中文詩(shī)歌很多時(shí)候一個(gè)字就是一個(gè)語(yǔ)義單元按“字”做語(yǔ)言模型比按“詞”做更穩(wěn)。詞表就是全部出現(xiàn)過(guò)的字幾百個(gè)字就夠用訓(xùn)練快、可控性強(qiáng)。按詞的話古詩(shī)里大量典故、人名、地名會(huì)切成碎片反而學(xué)不好。我一般默認(rèn)用字符級(jí)建模除非要做主題分類才考慮詞級(jí)特征。2.2 數(shù)據(jù)準(zhǔn)備把古詩(shī)庫(kù)變成模型能吃的序列樣本數(shù)據(jù)是詩(shī)歌接龍的命根子。常見(jiàn)做法是用公開(kāi)的古詩(shī)數(shù)據(jù)集里面包含唐詩(shī)、宋詞、詩(shī)經(jīng)等文本。拿到的原始數(shù)據(jù)通常是這種格式[{author: 李白, title: 靜夜思, paragraphs: [床前明月光, 疑是地上霜]}]也有的是純文本一行一首詩(shī)或描寫(xiě)段落后跟詩(shī)句。第一步是把所有詩(shī)句抽出來(lái)去掉作者、標(biāo)題、注釋。注意古詩(shī)里會(huì)有繁體字、異體字比如“裏”和“里”“閒”和“閑”。我一般會(huì)統(tǒng)一轉(zhuǎn)成簡(jiǎn)體做法是用opencc庫(kù)pip install opencc-python-reimplemented然后import opencc cc opencc.OpenCC(t2s) # 繁體轉(zhuǎn)簡(jiǎn)體 text cc.convert(raw_text)轉(zhuǎn)完之后還要做清洗去掉空格、換行、標(biāo)點(diǎn)保留句號(hào)逗號(hào)也行但接龍目標(biāo)是詩(shī)句通常去掉標(biāo)點(diǎn)讓模型自己學(xué)去掉長(zhǎng)度小于4或大于12的行因?yàn)槲逖越^句一般是5或7個(gè)字一句太短的行多半殘缺太長(zhǎng)的可能是散文混入。清洗后的語(yǔ)料長(zhǎng)這樣床前明月光 疑是地上霜 舉頭望明月 低頭思故鄉(xiāng)有了這個(gè)純文本列表就可以構(gòu)造訓(xùn)練樣本了。如果是n-gram需要統(tǒng)計(jì)“前N-1個(gè)字 - 下一個(gè)字”的計(jì)數(shù)如果是LSTM需要把每句詩(shī)轉(zhuǎn)成整數(shù)序列再用滑動(dòng)窗口切出輸入和標(biāo)簽。這一步是整個(gè)項(xiàng)目的地基沒(méi)做好后面模型再?gòu)?qiáng)也白搭。2.3 選型對(duì)照n-gram、LSTM與Transformer該用哪個(gè)搞清楚任務(wù)本質(zhì)后選型就清晰了。常見(jiàn)做法是分三檔n-gram字符級(jí)簡(jiǎn)單到用Python字典就能實(shí)現(xiàn)。它統(tǒng)計(jì)“前面n-1個(gè)字”這個(gè)狀態(tài)出現(xiàn)時(shí)后面跟的每個(gè)字的次數(shù)然后算概率。優(yōu)點(diǎn)是訓(xùn)練只要一次遍歷語(yǔ)料完全沒(méi)有GPU需求缺點(diǎn)是只能記住連續(xù)n個(gè)字內(nèi)的關(guān)系n設(shè)大了矩陣稀疏爆炸n設(shè)小了生成出來(lái)的句子前后邏輯差。對(duì)詩(shī)歌接龍這種短文本n3或4已經(jīng)能生成語(yǔ)法通順但內(nèi)容隨機(jī)的小詩(shī)。LSTM/GRU能捕捉遠(yuǎn)距離依賴比如律詩(shī)里上下句的語(yǔ)義呼應(yīng)。訓(xùn)練需要神經(jīng)網(wǎng)絡(luò)框架我一般用PyTorch因?yàn)閯?dòng)態(tài)圖方便寫(xiě)采樣邏輯。LSTM接收前文序列的embedding最后一個(gè)時(shí)間步的輸出通過(guò)全連接層映射到字典大小的向量softmax后就是下一個(gè)字的概率。它比n-gram學(xué)到的泛化能力強(qiáng)你輸入一句不在語(yǔ)料里的“半句詩(shī)”LSTM也能接出個(gè)差不多的下句。缺點(diǎn)是訓(xùn)練時(shí)間受序列長(zhǎng)度和數(shù)據(jù)量影響字符級(jí)詞表小的情況下CPU也能跑但效率低還是建議裝個(gè)CUDA版PyTorch。Transformer/預(yù)訓(xùn)練模型如果你手里有百G語(yǔ)料或者想直接用中文GPT-2那效果肯定最好但這不是普通“python實(shí)現(xiàn)NLP項(xiàng)目”該走的路。預(yù)訓(xùn)練模型像是拿電鋸切豆腐模型下載幾個(gè)G、顯存要十幾G而詩(shī)歌接龍本身數(shù)據(jù)量不大幾百KB古詩(shī)就夠。除非你后來(lái)要做風(fēng)格遷移、多輪對(duì)詩(shī)否則用Transformer從頭訓(xùn)是在給自己找罪受。我自己的建議路線是先花半小時(shí)用n-gram跑通整個(gè)“輸入-生成-輸出”流程感受一下概率采樣的效果再花兩小時(shí)把同樣的數(shù)據(jù)喂給LSTM對(duì)比質(zhì)量差異。兩條路寫(xiě)一遍你對(duì)序列生成的理解會(huì)深很多。下面的章節(jié)我就按這個(gè)順序展開(kāi)。3. 用純Python實(shí)現(xiàn)第一個(gè)可用的詩(shī)歌接龍字符級(jí)n-gram與beam search3.1 編碼與計(jì)數(shù)構(gòu)建轉(zhuǎn)移概率表n-gram的實(shí)現(xiàn)核心是計(jì)數(shù)器。我以“三元語(yǔ)法”為例也就是n3用前兩個(gè)字預(yù)測(cè)下一個(gè)字。你需要一個(gè)字典key是長(zhǎng)度為2的字符串或元組value是另一個(gè)字典記錄每個(gè)下一個(gè)字的出現(xiàn)次數(shù)。import os import random from collections import defaultdict, Counter def load_lines(path): lines [] with open(path, r, encodingutf-8) as f: for line in f: line line.strip() if len(line) 5 and len(line) 7: # 只保留五言或七言 lines.append(line) return lines def build_trigram(lines): # key: 前兩個(gè)字組成的字符串, value: Counter(下一個(gè)字 - 次數(shù)) model defaultdict(Counter) for line in lines: # 在開(kāi)頭加兩個(gè)特殊字符讓首字母也有前文 padded ^^ line $ for i in range(len(padded) - 2): context padded[i:i2] next_char padded[i2] model[context][next_char] 1 return model這段代碼做了兩件關(guān)鍵的事。第一給每一行首尾加了特殊字符^表示句首$表示句尾。這樣生成的時(shí)候模型知道如何開(kāi)始和結(jié)束。第二用defaultdict(Counter)構(gòu)建兩層字典外層的key是“前兩個(gè)字”內(nèi)層的key是“下一個(gè)字”。統(tǒng)計(jì)完成后你隨時(shí)可以查model[明月][光]得到“明月”后面跟“光”的次數(shù)。注意我過(guò)濾了長(zhǎng)度在5到7之間的行。嚴(yán)格來(lái)說(shuō)五言是5字七言是7字但古詩(shī)里也有四言和雜言過(guò)濾掉能減少噪聲。如果你想讓模型也能生成七言和五言混合就不要死卡長(zhǎng)度可以在構(gòu)造樣本時(shí)把句子按逗號(hào)再分割逐句加入。下一步是把這個(gè)計(jì)數(shù)模型轉(zhuǎn)成概率模型。因?yàn)橐玫诫S機(jī)采樣我直接保留計(jì)數(shù)生成時(shí)再除以總數(shù)或者用random.choices按權(quán)重采樣。后者更省事。3.2 beam search采樣讓接龍不只會(huì)重復(fù)有了模型最樸素的生成是貪心每次選概率最大的字。但這樣會(huì)陷入循環(huán)比如“床前明月光”之后永遠(yuǎn)接“疑是地上霜”因?yàn)橛?xùn)練語(yǔ)料里這個(gè)組合頻率高。更糟糕的是如果模型只學(xué)到高頻搭配你就會(huì)得到“床前明月光床前明月光”的復(fù)讀機(jī)。解決手法是用beam search束搜索每一步維護(hù)K個(gè)候選序列每個(gè)候選序列按累計(jì)log概率排序下一輪對(duì)每個(gè)候選繼續(xù)展開(kāi)所有可能的字再取前K個(gè)。這樣生成的質(zhì)量遠(yuǎn)好于貪心又比純隨機(jī)穩(wěn)定。def beam_search(model, prefix, beam_width5, max_len10): # prefix: 用戶輸入的字符串至少2個(gè)字符因?yàn)閚3 start prefix[-2:] # 取后兩個(gè)字作為初始context candidates [(start, prefix, 0.0)] # (context, full_text, log_prob) for _ in range(max_len - len(prefix)): new_candidates [] for ctx, full, lp in candidates: counts model.get(ctx) if not counts: continue # 沒(méi)有見(jiàn)過(guò)這個(gè)context放棄該分支 total sum(counts.values()) for ch, cnt in counts.items(): prob cnt / total new_lp lp math.log(prob) new_full full ch new_ctx ctx[1] ch new_candidates.append((new_ctx, new_full, new_lp)) # 只保留分?jǐn)?shù)最高的beam_size個(gè) new_candidates.sort(keylambda x: x[2], reverseTrue) candidates new_candidates[:beam_width] # 若所有候選都斷了提前結(jié)束 if not candidates: break # 返回分?jǐn)?shù)最高的完整文本 candidates.sort(keylambda x: x[2], reverseTrue) return candidates[0][1]這個(gè)函數(shù)每步對(duì)當(dāng)前所有候選展開(kāi)所有可能的下一個(gè)字計(jì)算累計(jì)對(duì)數(shù)概率然后截?cái)嗟絙eam_width。對(duì)數(shù)概率避免了很多個(gè)小概率相乘導(dǎo)致的浮點(diǎn)下溢這是做beam search必須養(yǎng)成的習(xí)慣。參數(shù)beam_width越大生成的多樣性越好但耗時(shí)線性增加。對(duì)詩(shī)歌接龍5到10就夠。3.3 三個(gè)關(guān)鍵參數(shù)n、溫度、beam size怎么設(shè)n-gram里的n決定記憶力長(zhǎng)度。n2時(shí)很容易生成無(wú)厘頭的順口溜n4時(shí)生成的句子更像原詩(shī)片段但數(shù)據(jù)稀疏非常明顯很多context沒(méi)見(jiàn)過(guò)導(dǎo)致生成中斷。我實(shí)測(cè)下來(lái)n3是性價(jià)比最高的。如果你語(yǔ)料量大到幾萬(wàn)首可以試n4但要把未登錄詞處理做好——比如context沒(méi)見(jiàn)過(guò)時(shí)回退到較低階的n-gram這叫backoff。beam width不能太大太大容易讓所有候選都來(lái)自同一高頻分支反而失去多樣性。這里有個(gè)反直覺(jué)點(diǎn)beam search的目標(biāo)函數(shù)是“序列整體概率最高”這意味著它會(huì)優(yōu)先選語(yǔ)料里出現(xiàn)過(guò)的整句而不是有創(chuàng)意的句子。所以如果你想看到模型“創(chuàng)作”新詩(shī)而不是背誦原詩(shī)需要在采樣時(shí)引入溫度參數(shù)。溫度temperature是軟max里的縮放系數(shù)。在生成時(shí)我們把概率換成p_i exp(log(p_i)/T)再歸一化。T1時(shí)分布變平緩低概率字也有機(jī)會(huì)被選中T1時(shí)分布變陡峭趨向貪心。我用n-gram時(shí)一般不在beam search里加溫度因?yàn)閎eam search本身就是取top溫度會(huì)影響排序。正確做法是想要質(zhì)量高、像古詩(shī)用beam searchT1想要花樣多、能“作詩(shī)”改用random sample并按溫度重新加權(quán)概率。兩種路徑我都保留在代碼里隨場(chǎng)景切換。另外一個(gè)容易忽略的參數(shù)是最大生成長(zhǎng)度。詩(shī)歌接龍通常續(xù)3到4個(gè)字就能構(gòu)成完整一句因?yàn)橛脩糨斎氚刖浠蛘呦肜m(xù)下一句。我的經(jīng)驗(yàn)是如果用戶輸入的是“床前明月”最大長(zhǎng)度設(shè)為10讓它生成通順的七言如果用戶輸入的是完整“床前明月光”再接龍就是出下一句最大長(zhǎng)度設(shè)為12也夠。長(zhǎng)度太長(zhǎng)會(huì)讓模型變散文失去詩(shī)的節(jié)奏感。到這里你已經(jīng)有一個(gè)不開(kāi)GPU也能跑的詩(shī)歌接龍腳本。它會(huì)讀古詩(shī)文件記住所有三字結(jié)合接著用戶輸入的半句詩(shī)返回一個(gè)續(xù)句。如果你想繼續(xù)提高生成質(zhì)量下一步就該上深度學(xué)習(xí)了。4. 把接龍升到深度學(xué)習(xí)用LSTM做更自然的續(xù)句4.1 構(gòu)造訓(xùn)練數(shù)據(jù)滑動(dòng)窗口生成特征與標(biāo)簽深度學(xué)習(xí)的訓(xùn)練數(shù)據(jù)不再是計(jì)數(shù)表而是整數(shù)序列。先把所有詩(shī)句拼接成一個(gè)長(zhǎng)序列或者按句切割。我傾向于按句切割但為了學(xué)習(xí)上下文關(guān)系也可以把整首詩(shī)作為一個(gè)序列中間用分隔符連接。這里提供一種簡(jiǎn)潔的按句切法def build_dataset(lines, seq_len5): # 建立字-id映射 chars sorted(set(.join(lines))) char2id {c: i for i, c in enumerate(chars)} id2char {i: c for c, i in char2id.items()} X, y [], [] for line in lines: ids [char2id[c] for c in line] # 用前seq_len個(gè)字預(yù)測(cè)后面所有字 for i in range(len(line) - seq_len): X.append(ids[i:iseq_len]) y.append(ids[iseq_len]) return X, y, char2id, id2char這段代碼的核心是滑動(dòng)窗口。比如句子“床前明月光”轉(zhuǎn)成ids后seq_len3時(shí)[床,前,明]預(yù)測(cè)月[前,明,月]預(yù)測(cè)光。這個(gè)做法讓一條五言詩(shī)句產(chǎn)生兩個(gè)訓(xùn)練樣本。注意我沒(méi)有把整首詩(shī)不分句來(lái)滑窗因?yàn)楣旁?shī)的上下句之間有語(yǔ)義呼應(yīng)但接龍通常只延續(xù)半句跨句訓(xùn)練反而會(huì)讓模型去記憶下一句開(kāi)頭降低泛化性。如果你要玩藏頭詩(shī)、要續(xù)一整首那再改成跨句滑窗。seq_len是模型看到的“上文長(zhǎng)度”。n-gram里的n是固定的3LSTM里的seq_len可以靈活調(diào)。對(duì)七言詩(shī)seq_len設(shè)為7能覆蓋完整的一句但我發(fā)現(xiàn)seq_len5到6已經(jīng)足夠因?yàn)榻育垥r(shí)用戶給的前綴通常不會(huì)太長(zhǎng)而且LSTM內(nèi)部有隱狀態(tài)理論上能記住更長(zhǎng)信息。設(shè)太長(zhǎng)會(huì)加大訓(xùn)練負(fù)擔(dān)還會(huì)讓模型過(guò)于依賴前文的精確順序。4.2 搭建一個(gè)可訓(xùn)練的中文詩(shī)歌LSTM模型這里用PyTorch搭一個(gè)兩層LSTM。詞表大小就是剛才的char2id長(zhǎng)度一般幾百到一千。embedding維度我選128隱藏單元選256。下面是完整模型定義import torch import torch.nn as nn class PoemLSTM(nn.Module): def __init__(self, vocab_size, embed_dim128, hidden_dim256, num_layers2, dropout0.3): super().__init__() self.embedding nn.Embedding(vocab_size, embed_dim) self.lstm nn.LSTM(embed_dim, hidden_dim, num_layers, batch_firstTrue, dropoutdropout) self.fc nn.Linear(hidden_dim, vocab_size) def forward(self, x): # x: (batch, seq_len) emb self.embedding(x) # (batch, seq_len, embed_dim) out, _ self.lstm(emb) # (batch, seq_len, hidden_dim) last out[:, -1, :] # 取最后一個(gè)時(shí)間步 logits self.fc(last) # (batch, vocab_size) return logits這里有幾個(gè)關(guān)鍵點(diǎn)batch_firstTrue讓輸入形狀變成(batch, seq_len, feature)這是PyTorch LSTM的習(xí)慣性寫(xiě)法out[:, -1, :]只取序列最后一個(gè)時(shí)間步的輸出因?yàn)轭A(yù)測(cè)目標(biāo)就是最后一個(gè)字之后的字。如果你用雙向LSTM這里要拼接前后兩個(gè)方向但古詩(shī)接龍只能看上文所以用單向LSTM更合理。訓(xùn)練時(shí)用交叉熵?fù)p失但注意別把標(biāo)簽做成one-hot直接用nn.CrossEntropyLoss()配合整數(shù)標(biāo)簽就行。優(yōu)化器我常用Adam學(xué)習(xí)率設(shè)0.001。下面是訓(xùn)練循環(huán)的骨架def train_model(model, X, y, epochs30, batch_size128, lr0.001): optimizer torch.optim.Adam(model.parameters(), lrlr) loss_fn nn.CrossEntropyLoss() dataset torch.utils.data.TensorDataset( torch.tensor(X, dtypetorch.long), torch.tensor(y, dtypetorch.long) ) loader torch.utils.data.DataLoader(dataset, batch_sizebatch_size, shuffleTrue) for epoch in range(epochs): total_loss 0 for xb, yb in loader: model.zero_grad() logits model(xb) loss loss_fn(logits, yb) loss.backward() optimizer.step() total_loss loss.item() if (epoch 1) % 5 0: print(fepoch {epoch1}, loss {total_loss/len(loader):.4f})訓(xùn)練結(jié)束后保存model.state_dict()方便下次加載。注意embedding層會(huì)把每個(gè)字映射成一個(gè)向量LSTM學(xué)的是“在這種向量排列下下一個(gè)字通常是什么”。如果你的語(yǔ)料只有幾千首過(guò)擬合會(huì)很明顯所以訓(xùn)練到loss降到一定值后就得停止不要追求完美。4.3 訓(xùn)練與采樣loss降到多少才夠用訓(xùn)練loss不是越低越好。我拿全唐詩(shī)五萬(wàn)多首做實(shí)驗(yàn)字符級(jí)詞表大約3000字在兩層LSTM 256隱藏單元下loss約在1.8左右就能穩(wěn)定生成通順句子降到1.5以下時(shí)模型開(kāi)始傾向于復(fù)讀原句生成創(chuàng)新性下降。這個(gè)規(guī)律挺反直覺(jué)的——很多NLP項(xiàng)目追求loss越低越好但生成任務(wù)里loss太低等于記住了訓(xùn)練集。采樣時(shí)深度學(xué)習(xí)模型不像n-gram有硬性的context匹配失敗問(wèn)題因?yàn)樗鼘?duì)任意輸入都能給出softmax分布。但正因如此沒(méi)有temperature調(diào)節(jié)的話它更容易生成高概率的常見(jiàn)字。我常用temperature0.8生成既能保住通順度又有一定創(chuàng)新。下面是采樣代碼def sample(model, prefix, char2id, id2char, seq_len, max_len20, temperature0.8): model.eval() # 把prefix補(bǔ)到seq_len長(zhǎng)度 chars list(prefix) for _ in range(max_len - len(prefix)): # 取最后seq_len個(gè)字不夠則左側(cè)補(bǔ)起始符這里用第一個(gè)字的id補(bǔ) context chars[-(seq_len-1):] if len(chars) seq_len-1 else chars if len(context) seq_len: pad [char2id[chars[0]]] * (seq_len - len(context)) context_ids pad [char2id[c] for c in context] else: context_ids [char2id[c] for c in context[-seq_len:]] # 確保長(zhǎng)度正確 context_ids context_ids[-seq_len:] x torch.tensor([context_ids], dtypetorch.long) with torch.no_grad(): logits model(x)[0] # 溫度采樣 logits logits / temperature probs torch.softmax(logits, dim-1) next_id torch.multinomial(probs, 1).item() chars.append(id2char[next_id]) return .join(chars)采樣時(shí)每次只取最后seq_len個(gè)字作為輸入然后逐個(gè)生成。注意我用了torch.multinomial而不是argmax這是生成任務(wù)的關(guān)鍵——純argmax會(huì)生成大概率但無(wú)聊的句子multinomial按概率隨機(jī)抽配合temperature可以得到多樣且合理的輸出。如果你想讓輸出更像格律詩(shī)可以在采樣后加一個(gè)大體檢測(cè)檢查最后一個(gè)字的韻腳或者檢查每句字?jǐn)?shù)。但這些都算是后處理放在進(jìn)階技巧里展開(kāi)。5. 詩(shī)歌接龍避坑指南數(shù)據(jù)、生成與環(huán)境的四個(gè)典型翻車點(diǎn)5.1 古詩(shī)庫(kù)的編碼坑繁體、異體和不完整的標(biāo)點(diǎn)現(xiàn)象模型生成的句子全是簡(jiǎn)體字但訓(xùn)練語(yǔ)料里的“里”和“裏”被當(dāng)成兩個(gè)不同字導(dǎo)致“故里”這個(gè)常見(jiàn)詞被拆散。更嚴(yán)重的是有的古詩(shī)庫(kù)直接從古文獻(xiàn)掃描OCR出來(lái)混有“丨”“丶”等生僻符號(hào)會(huì)拉高詞表大小浪費(fèi)訓(xùn)練空間。原因數(shù)據(jù)來(lái)源不是為機(jī)器學(xué)習(xí)準(zhǔn)備的原始文本包含繁體、異體和噪聲符號(hào)。我一開(kāi)始偷懶直接用原始語(yǔ)料跑結(jié)果詞表里冒出3000多個(gè)罕見(jiàn)的收字模型把所有精力用在區(qū)分這些低頻字上生成質(zhì)量大打折扣。解決訓(xùn)練前統(tǒng)一做三步先用opencc轉(zhuǎn)簡(jiǎn)體再手動(dòng)清掉非漢字字符最后過(guò)濾掉長(zhǎng)度異常的行。這一步?jīng)]法全自動(dòng)需要定期抽查樣本。血的教訓(xùn)是別相信任何“已經(jīng)清理好”的古詩(shī)下載包自己跑一遍清洗才放心。5.2 訓(xùn)練時(shí)的loss不降學(xué)習(xí)率與序列長(zhǎng)度現(xiàn)象LSTM訓(xùn)練50個(gè)epochloss一直在3.0附近徘徊生成的全是“之乎者也”一類的高頻虛詞。原因最常見(jiàn)的是學(xué)習(xí)率太大導(dǎo)致loss震蕩或者學(xué)習(xí)率太小導(dǎo)致模型卡在較差局部解。另一個(gè)隱藏原因是序列長(zhǎng)度太短比如seq_len2模型根本學(xué)不到語(yǔ)義。還有一個(gè)容易忽略的沒(méi)有加embedding的初始化或者輸入id從0開(kāi)始但字典里有0填充導(dǎo)致padding干擾。解決先把學(xué)習(xí)率調(diào)到0.0005batch_size調(diào)小一點(diǎn)觀察loss是否有下降趨勢(shì)。如果序列長(zhǎng)度小于5先改成5。如果還是不動(dòng)檢查輸入數(shù)據(jù)是否真的被正確塑形用print(X[0], y[0])看一眼前后對(duì)應(yīng)關(guān)系。我遇到過(guò)把X和y錯(cuò)位一行的情況模型等于在猜隨機(jī)數(shù)loss當(dāng)然不降。5.3 生成內(nèi)容全是“的”“了”溫度太低與詞頻熵現(xiàn)象無(wú)論用戶輸入什么生成的下一句都是“春風(fēng)得意馬蹄疾”這種高頻詩(shī)句或者反復(fù)輸出“的”“了”這種虛詞。原因古詩(shī)語(yǔ)料里“之”“人”“風(fēng)”等字出現(xiàn)頻率極高模型學(xué)到的先驗(yàn)分布被這些高頻詞主導(dǎo)。如果temperature設(shè)得太低比如0.2softmax輸出幾乎等同于argmax模型就只會(huì)選這些高頻詞。beam search的寬度如果設(shè)得太大也會(huì)導(dǎo)致候選全是高頻組合看起來(lái)反而單一。解決把temperature調(diào)到0.81.2多試幾次。另外可以在采樣時(shí)對(duì)高頻虛詞做降權(quán)比如把“的”“了”“之”的logits減去一個(gè)大常數(shù)。這個(gè)方法雖然粗暴但很有效。還有一個(gè)技巧如果使用beam search從5個(gè)候選中挑一個(gè)“不是最順口”的反而更有詩(shī)意。5.4 環(huán)境依賴numpy版本和Python 3.8的兼容問(wèn)題現(xiàn)象代碼在一臺(tái)機(jī)器上跑得好好的換到另一臺(tái)裝了Python 3.8的機(jī)器上import torch直接報(bào)錯(cuò)或者numpy操作報(bào)AttributeError: module numpy has no attribute float。原因PyTorch版本和numpy版本不匹配老版本numpy里np.float這種別名在numpy 1.24之后被移除了。很多詩(shī)歌接龍項(xiàng)目demo寫(xiě)于兩三年前里面用了np.float、np.int在新環(huán)境里直接崩。解決給項(xiàng)目寫(xiě)一個(gè)requirements.txt鎖定版本。我常用的組合是python3.8.18、numpy1.23.5、torch2.0.1。不要一上來(lái)就裝numpy 2.x除非你確認(rèn)代碼里沒(méi)用舊別名。還有一個(gè)更穩(wěn)做法用from numpy import float這種地方全改成float或者干脆pip install numpy1.23.5一步到位。環(huán)境問(wèn)題雖然不大但能卡你半天這真不是玄學(xué)。6. 進(jìn)階技巧從單一接龍到藏頭詩(shī)與風(fēng)格控制當(dāng)你的接龍模型能穩(wěn)定續(xù)出通順句子時(shí)下一步可以讓輸出更“好玩”或者更“可控”。這里我給你三個(gè)我實(shí)際用過(guò)、效果明顯的小改造。第一個(gè)是藏頭詩(shī)生成。用戶指定四個(gè)字比如“山河無(wú)恙”要求每句開(kāi)頭分別是這四個(gè)字。實(shí)現(xiàn)思路叫約束beam search在beam search擴(kuò)展候選時(shí)對(duì)于每一句的第一個(gè)字符只允許候選等于指定字。具體來(lái)說(shuō)你可以在生成前設(shè)置一個(gè)forced_chars列表第i句生成時(shí)將beam search的每一步查詢改為當(dāng)生成的字符位置是句首時(shí)直接過(guò)濾掉不是目標(biāo)字的候選。這樣做需要注意被強(qiáng)制選擇的字如果在模型里概率很低整句的log概率會(huì)比其他候選低于是beam search可能把整個(gè)分支剪掉。解決方法是放寬剪枝對(duì)被強(qiáng)制的字乘上一個(gè)放行權(quán)重或者干脆直接不讓概率參與排序只讓后面的詞決定排序。這種方法雖然簡(jiǎn)單但能讓輸出每句都以指定字開(kāi)頭實(shí)現(xiàn)成本不到20行代碼。第二個(gè)是風(fēng)格控制。你想讓模型生成“李白一點(diǎn)”還是“杜甫一點(diǎn)”可以在訓(xùn)練數(shù)據(jù)上下功夫把作者信息作為條件在輸入序列最前面加一個(gè)“風(fēng)格標(biāo)記”。比如對(duì)李白的詩(shī)輸入為“[李白]床前明月光”對(duì)杜甫的詩(shī)輸入為“[杜甫]國(guó)破山河在”。訓(xùn)練時(shí)模型會(huì)把風(fēng)格標(biāo)記當(dāng)作前文的一部分生成時(shí)你也把“[李白]”拼在輸入前綴前面。這樣同一個(gè)模型能感知不同詩(shī)人的用詞習(xí)慣算是很輕量的conditional language model。如果你不想重新訓(xùn)練也可以在采樣后做規(guī)則過(guò)濾比如檢測(cè)是否含“劍”“酒”“月”——但規(guī)則永遠(yuǎn)不如數(shù)據(jù)條件自然。第三個(gè)是韻律校驗(yàn)。古詩(shī)接龍最讓人頭疼的是最后一句的韻腳。你可以準(zhǔn)備一個(gè)韻表在生成最后一個(gè)字時(shí)只采樣壓韻母的字。做法很簡(jiǎn)單把logits中不符合當(dāng)前韻部的位置全部置為負(fù)無(wú)窮然后重新softmax。注意必須先確定本首詩(shī)壓什么韻通常是第一句的最后一個(gè)字決定。如果用戶輸入的是“床前明月光”最后生成的字必須壓“ang”韻于是“霜”“鄉(xiāng)”“望”“裳”成為候選。這個(gè)校驗(yàn)可以放在溫度采樣之后也可以直接把采樣空間限制在韻部?jī)?nèi)。我的習(xí)慣是先限制韻部再采樣這樣既快又自然。我自己做過(guò)一版用藏頭詩(shī)LSTM的生成器翻車的地方在于強(qiáng)制字常常是“之”“以”這類虛詞導(dǎo)致整句變成“山之高兮水之長(zhǎng)兮”雖然壓韻但不口語(yǔ)。后來(lái)我把強(qiáng)制字出現(xiàn)的概率閾值放寬甚至在候選為空時(shí)允許放棄該句改用次優(yōu)句才算穩(wěn)定下來(lái)。這是血淚經(jīng)驗(yàn)約束越多生成質(zhì)量越容易崩需要給模型留一條“破例”的后路。這個(gè)項(xiàng)目做到最后你會(huì)發(fā)現(xiàn)詩(shī)歌接龍的核心價(jià)值不在于“寫(xiě)詩(shī)有多像”而在于你對(duì)語(yǔ)言模型生成機(jī)制的完整理解——從計(jì)數(shù)到神經(jīng)網(wǎng)絡(luò)從貪心到beam search從過(guò)擬合到溫度調(diào)節(jié)。這些經(jīng)驗(yàn)會(huì)直接遷移到其他生成任務(wù)比如切詞、評(píng)論生成、甚至簡(jiǎn)單對(duì)話。希望我的這些踩坑記錄和參數(shù)習(xí)慣能幫到你少走點(diǎn)彎路。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
青娱乐亚洲热| 午夜精品久久一区二区| 有码免费观看| 久操婷婷| aⅴ日韩成人电影av在线免费看av大全| 精品无码少妇| 中文字幕色AV| 九九热精彩视频| 无码免费一区二区三区啪啪| 超碰成人国产| 国产精品久久久久中文字幕| 美女天天干| 大香蕉淫人| 91激情综合| 97资源超碰| 久久九九国产精品| 狠狠操夜夜| 国产精品九九九| 婷婷国产精品一区二区| 免费97视频| 亚洲精品一区二区免费在线观看| 91性生活久久久| 性色一线| 旡码电影特区| 操香逼| 亚洲色吧网| 久热9| 国产精品一级特黄aaa大片在线观看| 国产日本一区二区三区蜜臀在线观看| 日韩无码第3页| 色网在线| 台湾佬大香蕉| 大香蕉综合网| 日韩无码一区二区三区| 综合久久少妇中文字幕| 日本成熟少妇A∨网站| 久草这里只有精品 | 久久99国产精品| 99在线精品观看视频中文| h色99999| 97操b| A级国产欧美激情在线| 精品国产Av无码久久久亚洲| 成人免费性爱视视| 亚洲熟女精品| 每日更新AV| 午夜影美女日鸡鸡天天视频国产| 爽 好舒服 无码刺激久久| 一级特级aaaa毛片免费观看| 99热精品在线观看| 欧美少妇第一页| 伊人精品视频| 中文字幕免费在线观看| 超碰九区| 吖在线不卡一区二区国产剧情| 人人操肉肉| 中文字幕乱在线伦视频中文字幕乱码在线| 综合操逼| 天天摸天天插天天日| 亚洲情色婷婷五月天| 亚洲。日韩。欧美| 黑人粗大V S日韩女优视频| 亚洲有薄码区久久在线一区| 大JI巴好深好爽又大又粗视频| 国产又粗又大硬免费色网视频| 99无码狠狠久久| 操逼天美3区| 久久激情亚洲精品无码?V| 97在线精品| 日本一区二区电影网站| 最新9久久久9免费视频| V A在线| 综合 欧美 亚洲 日本| 中文字幕成人理论在线| 嗯嗯啊操我| 九九热在线精品视频| 欧美淫乱视频| 日韩一区二区三区四区五区| 97香焦色区| 91 综合 色| 亚洲色图A| 极品欧美一区二区三区| 国产精品天美传媒| 久久机热| 热久久国产| 欧美一级色| 天天天乱色综合全| 精品在线蜜臀| 超碰在线99| 91成人社区| 午夜在线播放| 久久人妻丝袜一区二区三| 人妻无码视频一区二区三区久久| 亚洲无码精品AV久久久| 欧美日本久久精品一区| 无码一区免费在线不卡| 亚洲无码99| 很狠操| 中文字幕人成乱码熟女香港| 九九九综合精品| 色爱亚洲| 亚洲中文电影| 久久99午夜精品一区人妻| 天天综合香 ld视频| 好吊色综合| 日本 欧美 国产一区| 久久精品中文| 国产综合网站在线播放 | 精品人妻一区二区三区四区| 97舔舔| 2017,超碰| 伊人影院综合是一个与深夜成人在线| 乱码熟妇人妻久久久| 久久粉色| 天天综合精品| 欧美日韩在线视频网站| 欧美久久婷婷| 精品成人亚洲午夜电影| 久啪| 国产一级操B视频| 久久av网| 久思思热视频在线观看| 色偷偷色偷偷欧美日韩| 亚洲av国产av综合av卡| 日韩精品作爱导航| 亚洲啪啪视频一区二区| 激情综合网一盗摄| 少妇高潮对白在线观看| 精品久久97观看在线视频| 免费精品福利在线观看| 91白嫩| 五月天激情婷婷| 久久午夜色播影院免费高清| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 欧美区亚洲区偷拍区| 男人的天堂.com| 白丝av| 久草视频制服诱惑| 一类av片在线看| 亚洲和欧美裸体美女双飞视频| 狼狼色丁香久久婷婷综合五月| 青青青青草av在线观看| 亚乱色| 亚洲人妻色图| 18一区二区三区| 青青操网| 久久久久深夜无码| 自拍盗摄一区| 伊人网综合在线视频| 久久久精品一区二区| 久草免费在线一区二区| dy888午夜老子影视达达兔| 亚洲第一页欧美| 日韩久久.一级黄色片| 91影视亚洲| 婷婷五月天小说| 国产精品高清2021在线| 日韩无码第3页| 夜夜操夜夜爽夜夜高潮| 无码精品一区二区三区潘金莲| 丰满少妇精品一区二区| 亚州欧美一区| 啪啪91| 综合 欧美 亚洲 日本| 日本二区不卡| 免费网色网站| 丁香六月婷婷综合| 日韩黄色成人性爱| 欧美精品一区二区少妇免费A片 | 亚洲性爱成人| 台湾佬大香蕉| 久久宗合亚洲| 亚洲美女30b| 九九热在线视频| 精品偷拍13p欧美dodk视频| juliaann丝袜| 国产综合久| 天天看高清麻豆| 亚洲精品一区二区三区新线路| 1禁看欧美黄片免费看| 亚洲图片欧美色图| 偷拍导航视频网站| 操老熟女AV| 免費人妻夜夜爽天天爽爽一区| 日本色婷婷| 久久精品高清AV| 欧美片第一页| 亚洲欧美成人网站AAA| 97综合久第一页| 粉嫩久久久久| 久久有码| 天天综合网91入口| 操九九九九九九| 91精品国产麻豆国产自产在| 日人妻视频91| 亚洲五月婷婷| 国内成人圈中文字幕无码视频| 色一射色一射| 国产精品 午夜福利| 精品少妇后入一区二区三区四区人妻巨乳| 91九色网| 可以免费观看的AV| 99色热| 超碰在线人妻| 亚洲熟妇无码一区二区三区| 午夜激情床戏激情| 天天澡天天爽日日av| 观看视频图片一区二区三区| 亚洲视频小说| 97视频在线免费| 九九九九97| 久久视频少妇美女| 蜜桃臀AV在线| 国产sv美女内射| 欧美高清16| 亚洲少妇视频| 国产午夜精品理论片一二三区区| 日韩99精品视频综合区| www.伪伪| 久久色情| 国产精品久久发布| 好吊色一区| 欧美白嫩在线放| 国产极品久久久| 日韩人妻精品| 精品九九九九九九| 鸡巴插逼视频| 殴美,日韩国产伦精品| 97色五月天完| 色天欧美| 91人妻在线视频| 亚洲精品久久久久毛片A片拉屎| 亚洲欧美日韩中文播放| 在线强奷到舒服的无码视频 | 亚洲人人夜夜澡人人爽| 日本大香蕉综合网红本杳社区| 久久久久夜夜夜夜| 日韩精品国产一区二区| 1956日韩精品| 麻豆国产成人精品| 91亚洲欧美激情| 三男一女不戴套的A片| 精品人妻中文字幕4399| 91九色在线| 香港成人一级视频在线青青草| 中文字幕精品一区欧美| 播播亚洲小说亚洲| 区一在线观看| 日韩熟女精一区二区三区不卡| 日韩在线欧美精品一区二区| 99热99在线| 色天使大香蕉| 中文乱码字字幕在线第5页| 精品亚洲国产成人精品| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 国产成人久久精品蜜臀| 国产女人91精品嗷嗷嗷嗷| 91国产丝袜足交精品视频| 另类视频在线| 天美精品原创av片国产| 色香色欲天天综合网天天来吧| 欧美男女午夜啪啪| 中文字幕免费在线观看| 一区二区三区探花在线观看| 欧洲精品在线播放| 加勒比综合88| 亚洲乱熟女一区二区三区大香蕉| 97一区二压| 黄色视频高清无码网站| 艹我哪美一区无码| 9美女超碰在线免费观看| 一级二级三级黑人无码| 四虎影库国产精品免费| 夜夜爽夜夜操| 久久精品99| 大香蕉92| japan日本高清乱xxxx| 亚洲男人天堂Av| 国产精品对白自产拍| 欧美αv.com| 激情婷婷综合久久| 中文字幕在线观看丝袜| 国产中文字幕在线| 欧美性爱伊人| 欧美日韩中文字幕不卡| 蜜乳av首页| 久久精品人妻一区二区三区| 免费在线观看AV无码网站| 欧美天堂超碰97| 国产老太乱伦一区| 欧美性区| 国产av又色又爽又黄| 久久、1234| 激情五月综合开心五月| 欧美爆操91| 国产性爱强奸乱伦大全| 91伊人影视综合| 国产免费一区2区3区| 综合网,亚洲,欧美| 亚洲第一免费视频| 美女黑人91神马| 亚洲天堂AV在线播放| 四虎884a| 国产内射爽爽大片| 五月丁香激情综合网| 激情视屏国产乱伦强奸| 欧美91久久久久| 国产97视频免费观看| 中文一区二区| 超碰精品在线| 国产女人视频三四五区| 加勒比综合九九99视频在线播放| jk白丝没脱就开始啪啪| 国产又粗又长的视频| 99日韩| 天天综合AV| 日本孕妇一区二区视频操逼免费看 | 老外又粗又长一晚做五次| 色呦呦、国产精品| 乱伦av麻豆| 老鸭窝在线视频播放| 91色情黑丝搞鸡在线观看一区二区三区三州| 欧美97网| 91成人在线| 欧美性爱日韩性爱| 麻豆天美在线| 蜜桃精久三区| 亚洲天堂无码| 精品视频一区二区| 日韩精品人妻中文字有码在线| 久久久久久精品免费看A级| 天天综合网视频91| 精品射1999| α√在线| 中文字幕在线免费观看2| 试看福利| 亚洲最大91网| 国产色精品午夜大片| 九九热国产| 人人妻人人色| 丁香五月激情综合| 日韩一性一交一A片俄罗斯| 亚洲精品黄码久久久久| 天堂在线一区二区| 九九热免费国产视频婷婷伊人五月 | 久久av网| 人人人人人人少妇| 欧美黄色大香蕉一区二区| 新亚洲无码| 久欲AV| 男人天堂站| 亚洲成?V人片在线观看福利| 中文字幕精品一区欧美| 91人人| 亚洲国产丝袜在线观看| 亚洲视频一二区| 男人的天堂亚洲| 国产三级日产三级韩国三级| 国产在线激情视频| 人人看人人插| 九九九精品成人免费视频小说| 天天天操天天天爱| 超碰中文字幕人妻草一区| 国产亚洲人妻综合日韩 久久| 岛国艾薇凹凸视频天堂| 中文字幕日韩精品久久| 亚洲丝袜诱惑| 超碰在线免费一区二区三区| 欧美综合自拍亚洲综合图| 国产精品久久久777| 天堂av2019| 日本99热| 美女刺激久久国产欧美| 精品久久久av| 欧美亚洲综合色| 97干在线视频| 色色色五月婷婷| 啊啊啊啊啊舒服| 欧美人人天天网| 九九九九九九九九九五码| 欧美日日夜夜| 东京热一区二区三区四区五区六区| 亚洲欧美精品一区天堂久久 | 任你艹| 色综合九九| AV九九| 久久久网站| 久久综合婷婷| 天天摸,夜夜摸| 少妇 综合| 97中文超碰| 亚洲色图91欧美日韩| 欧美色棕合| 亚洲 中文 女同| 亚洲情色1区| 校园春色欧美色图| 亚洲超碰综合网| 成人精品欧洲亚洲| chaopen97久久| 清纯唯美综合| 欧美国产精品久久九九| 国产精品久久久无码aV去| 亚洲另类小说卡通动漫| 亚洲色图亚洲无码强奸乱伦| 色情五月丁香| 亚洲丝袜色图| 国产精品3| 91久久国产精品| 91久青| 一区二区三区无卡视频在线观看| 久久国产精品视频| 91老熟女视频| 久久久久久久久成人av解说| 日韩精品国产精品五码一区二区| 人人操天天爽| 亚洲丨在线| 国产精品懂色tv影视免费观看| 五月婷婷六月丁香网址| 人人色人人操在线| 色盈盈影院| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 亚洲无限观看| 欧美人与动性人交a| 久久男人精品| 啊啊啊好湿久久| 碰人碰碰人人开房人肉| 九九碰九九爱97超| 去干网最新版| 麻豆性爱视频在线播放| 蜜臀中文无码午夜| 收看日本人日bb| 九九99精品视频在线观看| 欧美天堂日韩三级国产传媒| 日1区2区3区2020| 亚洲欧美另类激情小说| 狠狠干狠狠干| 91久久久久| 国产传媒午夜理伦精品| 红杏大香蕉| AV中文字幕剧情1区2区3| 久久久久久久久久9| 人人操人人插人www| 91高潮| 国产精品久久久鸭无码的功能| 中文字幕亚洲欧美在线不卡| 国内伊人久久久久久网站视频| 亚洲精品影视老司机| 亚洲综合影视| 欧美第二页| 国产精品久久久久综合| 亚州熟妇精品| 人人贴人人摸| 色月天AV导航| 七月丁香婷婷| 成人婷婷丁香| 另类小说欧美激情校园春色| 黄aaaaaaaaaaaaaaaaaa色网站| 91黑丝美女| 精品欧美不卡在线播放| 天美传媒国产原创中文字幕亚洲欧美另类 | 欧美日韩婷婷中文| 操婢日韩| 亚洲精品欧美专业| 无码人妻精品一区二区中文| 国产视频一区二区三区久久亚洲天堂| 男人天堂网站| 九九九久千久久激情蜜桃在线看 | 欧美综合骚| 少妇一区二区三区| 日本不卡码黄色| 国产高清自拍视频| 上床不卡网站| 色官网色综合| 久久机热| 99色色| 国产怡红院| 日韩电影在线观看网址| 韩国三级三级BD在线| 欧洲黄色网| 久久中文色图| 99色热国产视频精品| 久久精品国产精品| 青娱乐日韩无码| 九九九九九九综合| 色99视频| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 九九视频黄色片| 国产成人AV麻豆| 飘花国产午夜精品不卡| 麻豆天美在线喷水AV| 亚洲成人久久一区二区| 人妻另类| 日本丝袜美腿人妻九九| 新久久AV| 女人香蕉久久毛毛片精品| 婷婷五月影院| 日韩在线一区高清在线| 在线观看啊啊啊啊啊| www99热| 囯产精品久久久久久久久久梁医生 | 亚州国产成人精品女人久久| 婷婷五月丁香五月| 久久国产AⅤ| 亚州熟妇精品| 后入美女国产| 多毛小伙内射老太婆| 欧美亚洲清纯| 极品销魂美女一区二区| 久久久精品中文字幕麻豆| 在线播放成人网站| 高潮的A片激情扒开一区| 久久亚洲天堂| 中文乱码99| 国产三级电影免费观看| 日韩人妻一区二区| 草B在线| 伊人丝袜美腿高跟在线观看高清| 日本在线激情一区二区三区| 1769一区| 2017天天拍大香蕉| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 69久久久久久久久久久久久| 91ise欧美| 亚洲最新a在线观看| 九九AV| #NAME?| 天天看特黄的免费网站| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 全球成人中文在线| 91精品亚洲内射孕妇| 操一对老熟妇爽上天视频| 超碰精品| 久久婷婷在线观看视频| 一区二区激情国产熟女| av婷婷色婷婷色六月| 青娱乐休闲视频在线观看| 国产97/欧美| 中文字幕视频免费| 日韩人妻网站| 99国产精品人妻人伦| 欧美日韩性爱精品| hd成人一区二区在线| 中文字幕天堂在线| 大学生美女口爆| 日本二三四区| 日韩欧美中文字幕搭讪巨乳美人妻视频| 欧美综合制服在线| 大香网伊人久久综合网eew| 欧美综合自拍成人自拍第二十页| 日韩在线观看中文字幕视频| 男人天堂最新手机版在线青青草| 1024手机看片欧美日韩| 四虎国产成人精品免费一女五男| 亚洲综合有玛| 国产精品 午夜福利| 麻豆精品久久久久久久| 中文字幕一区二区三区蜜臀| 91美女视屏| 欧美色棕合| 欧美日韩m| 日本 成 人 小说 电影 一区二区| 色人久久| 91xingse| 欧美一区二区传媒| 亚洲限制级| 美女黑人91神马| 亚洲成人妻日韩在线| 老司机久久| 精品妇操一区二区三区| 久久久亚洲熟妇资源| 在线视频资源| 高清国产精品福利网站| 狠狠久久手机视频精品| 黑人白女精品一区| 看黄片视频免费| 久久99网站| 欧美 亚洲 综合 制服| 久极品在线观看| 亚洲男人综合网| 日日玩天天干| 伊人超碰97| 免费视频在线一区二区不卡| 亚洲精品毛片在线观看| 久久一区二区三区入口| 亚洲综合小说另类图欧美视频激情小说色五月天 | 久久ww| 后入美女国产| 蜜桃久久久久久久久久久久| 亚洲中文字幕久久无码精品| 中文字幕av色| 久久久99999久网站| 中文字幕国产| 乱伦熟女专区| 911粉嫩人妻| 天天看天天综合成人网| 国产精品3| 1区2区3区视频| 91精品久久久| 亚洲天堂,男人| 蜜桃视频一区二区三区| 天天综合网在线91| 中文字幕国产| 性欧美另类高清| 99国产精品自在自在| 日日爱99| 国产成人自拍视频在线| 色婷婷蜜臀av| 欧成人精品一区二区三区| 大香蕉免费3| 久久天堂婷婷网| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 中文字幕在线免费观看视频| 嗯嗯啊啊视频一区二区三区| 人妻第一页| 久操com| 中日无幕一二三四区| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 亚洲日韩欧美一区二区| 操逼操逼操| 婷婷丁香五月综合| 少妇99| 超清福利精品视频在线| 五月丁香六月激情| 中文字幕第95页| 久久一二三四五六七八九区区| 变态综合色| 日韩av影片在线观看| 精品一区二区麻豆| 综合影院永久入口国产| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 97超碰人人模人人拍人人| 丁香啪啪| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 国产成人精品午夜福利| 香蕉黄色一级视频| 久久这里都是精品| 天天综合97| 激情AV| 骚日日av| 性色av蜜臀av色欲aV| 大香蕉在线视频重口味毛片在线| 99re超碰| 婷婷五月天综合网| 操久久久久| 小情侣高清国产在线视频| 中文字幕视频免费| 日韩簧片免费看| 激情亚洲天堂| 国产Av超碰| 精品一久久久| 国产一区二区久久| 国产精品一区二区手机看片| 日韩偷拍色图| 亚洲97在线观看| 国产欧美日韩在线观看麻豆传媒公司| 国产精品丝袜在线| 精品一区二区啪啪啪| 国产又粗又长又大的视频| 开心五月婷婷激情| 欧美丝袜中文字幕07在线| 婷婷导航| 国产乱子伦一区二区三区在线观看| 日本福利二区视频| 丰满人妻-区二区三区免费看 | 免费一级毛片在线视频观看| 国产亚热在线久久| 日韩性爱毛片操骚逼| 日日嗨AV一区二区夜夜| 亚州AV无码国产精品| 黄色成年| 天美国产精品| 99国产在线 精品 视频| 亚洲男人综合网| 日本久久天堂| 97爱爱爱| 亚洲美女色图| 欧美激情中文字幕另类小说| 在线小说视频一区| 色婷婷色99国产综合精品| 欧美日韩欧美| 校园春色亚洲欧洲| 萌白酱自拍视频| com 首页 18岁 禁区 女优 免费 精选 同城| 无码人妻丰满热妇又大又粗| 国语精品对白| 九九久久一区二区三区| 国产激情在线| 丁香九月婷婷| 韩国轻伦国内自拍一区| 亚洲精品官网在线观看| 久久超碰天天| 青青草在线视频欧美| 可以在线观看AV的网站| 尤物网站91| 亚洲精品 欧美精品| 淫妻综合网| 中国AV美女| 国产欧美另类久久久精品课程| 欧美性天天影视| 精品亚洲国产成人精品| 极品少妇久久久| 久久中出在线| 色嘟嘟人妻天堂网| 日韩久久.一级黄色片| 欧美亚洲情色| 欧洲精品一二三在线| 熟女丰满人妻一区| 久久久久国产精品喷潮免费观看臀| 97国产精品| 97视频新免费| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 亚洲砖码砖专无区2023| 精品丝袜无码一区二区三APP| 偷拍亚洲情色| 乱久久久| 日日夜夜骚| 欧美综合站| 免费av大片| 天天噜| 暴力av在线| 亚洲 另类 丝袜 自拍 动漫| 天天淫人人妻日日色| 视频分类 国内精品| 乱伦一区二区三区‘| 狠狠超| 加勒比中文av| 天美久久久久| 久久久精品九| 久湿久久| 久热大香蕉网站| 97视频7| 国产一区麻豆免费观看| 青草视频在线看看看看看看看看看| 日韩欧美俄罗斯A片| 伊人网免费视频| 99re在线| 久久免费少妇| 久久啊啊| 亚洲开心网| 97超碰美女| 97国产超碰| 婷婷激情四射| 亚洲天天操| 亚洲欧美清纯| 欧在线一二区| 青青久久艹| 久操精品| 大象AV在线| 无码区蜜乳| 97av在线观看| 亚洲欧美黄| 午夜美女诱惑电源网| 91网18| 91色堂| 九九九九九九免费视频| 精品国产乱码久久久久久久久久毛片| 久久久精品中文字幕麻豆| 夜夜高潮夜夜爽国产伦精品| 啊啊啊啊啊舒服| 99少妇| 激情一区二区| 一个色导综合| 亚洲综合另类小说色区亚洲成av人片在www| 国产日韩区| 人妻 丝袜美腿 中文字幕| 国语对白在线播放视频| 天堂8在线新版官网| 色婷久久| 欧美午夜精品久久久久久超碰| 亚洲欧洲美腿丝袜| 亚洲中文字幕乱码无码一区二区| 九月AV| 欧美亚洲日韩16色| 亚洲国产欧美一区二区潘金莲| 人人操人人肉久久精品| 丝袜 中出 制服 人妻 美腿 中文字幕| 人妻 欧美亚洲| 四虎AV在线播放| 九久精品| 国产色图乱伦| 老司机老司机午夜影院| 欧美激情综合| 蜜伊人色综合97| 日韩天天本| 啊啊啊啊好爽好舒服一区二区易域| 黄色交缠性感爆操91国产精品免费一区二区三区 | 久久久成人国产精品无码| 日韩精品99999| 97高清啪啪| 欧亚日韩综合精品国产| 美女久久久久久久久久久| 乱伦a片视频| 91性高潮久久久久久久久| 高清不卡一二三区视频......| 97一区二区三区视频| 午夜啊啊| 天天艹天天日| 6080yy午夜理论三级一区二区三区无码| 亚洲妇色| 97视频在线播放| 亚洲国产一区二区入口| 欧美操逼一二三区| 黑人粗大V S日韩女优视频| 久久久新亚洲AV| 无码av永久免费专区网站| www.狠狠干.coom | 久久久精品视频免费观看| 无码色| 亚洲诱惑天堂 | 天天躁日日躁AAA片李宗瑞| 色婷婷在线视频精品导航| 91天堂丝袜美腿| 加勒比海色香蕉婷婷| 一区二区三区黄片免费观看| 一区二区三区国产精产| 久久激情婷婷| 国产成人www免费人成看片| 日本不卡卡一区| 一二三区精品视频| 国产成人无码网站在线视频| 久久精品国产99国产精品亚洲| 国产又粗又长视频| 999国产精品999| 一区二区亚州激情久婷婷欧美| 激情综合网亚洲| 丁香五月成人| 美女好片色日本| 四虎影院成年人片| 亚洲一区二区 麻豆传媒| 碰碰97| 久草成人福利导航| 午夜精品久久久久久久久久久久久 | 少妇人妻好深太紧了vr91| 超碰亚洲欧美日韩无| 一本大道久| 精品一区二区成人动漫| 国产精品午夜精品| 99久久久er直播网址| 九九热男人天堂| 久9无限国产| 亚洲国产成人福利在线观看| 插入综合网| 久久精品99久久久久久| 国产精品久久久久无码A√| AV在线资源| 性爱边摸边日免费AV| 中文欧丝袜诱惑| 一区二区影院| 玖色av| 夜夜操二区| 国产v亚洲v日韩v欧美v片另类| 日韩三级一区| V A在线| 亚洲限制级| 免费强奸av| 人妻丰满熟妇av无码区蜜桃| 亚洲丁香花色| 日本成人在线不卡一区二区三区| 伊人国产av| se吧提供91精品国产91久久久久久| 91亚洲青青草原精品1区| 99久久精品欧美国产| 伊人 俄罗斯 a v| 亚洲一卡2卡3卡4卡乱码网站| 欧美亚州色的图| 激情五月综合| 国产欧美在线观看免费观看| 欧美激情超碰777| 日本免费一级AAA大片器 | 久久九九网| 天天噜| 狠狠夜色午夜久久综合在线| 亚洲精品xxx| 男人的天堂久久| 久久婷婷影院| 亚洲欧美一区二区网址| 国产天美传媒精品| 99精品在线| 精品久久久久久久| 日日夜夜国产综合| 欧美一区二区观看在线| 色吧91| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 人人做人人妻人人夜视频| 国产剧情在线| 亚州中文字幕超碰97| 色综合色| 国产午夜福利电影免费在线观看 | 日本一二区不卡| 91精品电影18| 国产一区二区在线电影| 91 丝袜在线播放| 97就爱干| 欧洲射精91| 色综合网1| 欧美色图综合| 日本幼女18+| 青青草色插素人| 黄色视频特级毛片| 人人操人人色网| 影音资源男人日韩| 深夜操逼网| 色噜噜精品一区二区三| 97爱亚洲| 超碰97综合网| 国产精品午夜福利视频| 日韩精品人妻中文字幕有码午| 亚洲欧洲精品视频发布| 日韩 国产 欧美自拍| 午夜一区| 日本五区不卡| 日韩精品人妻中文字幕久久久| 色婷婷香蕉| 男人a天堂手机在线版| 欧美福利视频啊啊啊啊| 97在线视频观看免费| 2025亚洲男人天堂| 69人妻精品一区二区绯色| 亚州操逼图| 校园春色亚洲色图| 欧美激情黑人| 97超碰天天爱天天爱| 欧美色偷拍 | av凤凰久久久| 操逼片中文| 中国熟女老妇仑乱一区二区三区| 久久东京热久久| 夜夜黄| 久久久久久99999国产精品| 蜜桃精品一区二区三区ww | 草草电影院| 一二三区精品视频| 人妻精品一区二区三区| 99999这里都精品| 啊啊啊啊啊啊啊啊啊在线观看| 久久中文色图| 欧美日韩少妇色情| 麻豆人妻少妇在线免费观看| 奸色色 男人天堂 天天射| 色性欧美| 这里只有精品视频| 久操高青| 性站 | 日韩无码极品| 日韩性爱啪啪视频| 大象AV在线| 俺去啦俺来也久久综合| 久久午夜鲁丝片| 日韩有码 一区二区三区| 99无码狠狠久久| 天天激情综合站| 在线一道啪| 久久婷婷综合国际产色怕| 亚洲无码AV九九九| 日韩人妻中文视频| 五月婷婷啪啪| www.四虎在线| 26uuu欧美| 天天影视色香色欲| 久久久久9999妇女| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 鸥美极品| 东北女人性交| 精品人妻一区二区免费蜜桃视频| 视频一区二区免费在线| 一个色导综合| 五月天玖玖资源站| 久久精彩视频| 91久久18禁| 色女99一级片在线观看| 精久久久91| 人人妻人人色一区二区三区| 男人天堂资源| 国产精品久久久久久无码红治院| 丁香五月综合| 日日干日日| 超碰1024久久| 亚洲男人天堂网站| 无码人妻精品一区二区三区99不卡| 大香蕉www.超碰| 成人性爱美曰韩| 另类图片五月| 免费99精品国产自在在线| 欧美懂色综合网| 欧 美 自 拍 偷 拍| 国产强奸超碰AV| 射丝袜高跟鞋99| 久久后入制服| 久久透逼视频| 亚洲乱熟女一区二区三区大香蕉| 大香蕉伊人色偷偷在线| 色娱乐色呦呦夜夜夜夜av| 97操b| 青青草原香蕉日本Ap| 视频国产欧美在线播放| 国产亚洲精品av一区| 日韩一级二级| 久草线上视频免费看| 中文字幕乱亚洲美女精品一区| 久久一区二区高清免费| 蜜桃久久一区二区三区| 日产成人久久| 丁香激情网| 91热情品| 久久夜夜| 天天爽天天操| 国产性爱欧美性爱在线| 久久伊人最新网址视频| 日本操BAV| 色色综合97| 91社区伊人| 色人久久| 视频在线观看青青99国产| 一级毛片电影免费看| 欧美成人精品A片免费一区99| 日本免费一区二区不卡| 成人午夜高潮av猛片| 日夜啪电影| 少妇熟女视频一区二区三区| 激情国产乱伦Av| 青青草啪啪网| a男人的天堂久久一级A毛片| 凹凸视频特色日本特黄| 亚洲自拍一区夜夜操| 亚洲 无码 偷拍| 人妻密肉在线观看| 91色花堂| 97色碰| 东京热99999| 热久久国产| 亚洲午夜AV| 久久久91福利姬| 欧洲一区二区| 欧亚性爱啪啪| 福利天堂| 丁香五六月啪啪| 综合干干干av久久久综合网| 久久久精品网站| 丁香五月天堂网| 啊啊啊啊免费视频| 无码自拍SM| 在线播放欧洲免费av| 97干在线视频| 国产精品久久久久9999小说| 欧美日本一区二区a人| 91欧美丝袜| 国产网站在线播放| 亚洲区限制级 99| 中文字幕性感少妇av| 狠狠操狠狠燥| 久久曰曰| 国产视频第二页| 欧美黑人猛交春色影视大全| 啊啊啊啊操死我| 成人精品视频一区二区| 放黄片放3级黄片没穿衣服| 床上啊啊啊一区二区三区| 欧美熟妇精品黑人巨大91| 欧美亚涩| 免费国产电影一区二区| 人妻人人澡人人爽人人| 国产av强奸美女| 老女人老91妇女老热女| 1024人妻熟女一区二区三区| 四季av一区二区凹凸精品小说| 综合色播| 青青在线视频免费| 夜夜爽33333| 情趣丝袜无码操逼视频| 超碰欧美在线欧美| 久色网| 国产精品不卡一区二区三区av| 国产刺激视频| 在线视频97| 日本久久999| 人妻少妇久久久| 黑人精品一区二区在线播放| 偷拍2020| 十八禁视频网站| 亚洲国产美女久久久久| 2019亚洲男人天堂| 人妻激情偷乱视频一区二区三区 | 性videos欧美熟妇hdx| 91成人久久| 色妹子A V| www.91理论| 亚洲九九九| 动漫av中文| 精品国产肉丝袜在线拍国语| 成人一二| 国产国产亚洲一二三久久| 九一屌逼| 国产高潮AA片免费看| 97精| 欧美日本国产日韩激情视频| 97国产中文| 91大神电影天堂| 大香网站| 91内射| 中文字幕伊人| 伊人五月天青青草婷婷| 人人看人人摸人人色| AA级电影三区| 搡老女人老91二区| 亚州国产精品乱| 欧美人与性动交a美精品| 亚洲天堂欧美| 久久风骚城市人| 97一区二压| 亚洲综合在线高清| J?P?NESEHD熟女熟妇伦| com 首页 18岁 禁区 女优 免费 精选 同城 | AV中文在线可看| 欧美狠狠弄| 人妻AV在线| 亚洲图片欧洲图片aⅴ| 9Ⅰ老熟女| 亚洲图片 欧美电影| 久久AV无码1区2区3区| 久久男人的天堂国产| 欧美黄片视频在线观看免费| 性爱视频无打码在线观看| 欧美人妻少妇| 日骚逼视频| 日韩人人精品| 加勒比东京热五月天天堂网| 亚洲伊人久久精品狠狠在线| 99在线观看| 人看人人摸人人操| 黄色AAAAAAAAAAA大片| 91精品免费| 超碰98综合网| 98精品国产乱码久久久久久| 91色五月俺来也| 九九在线视频| 五月天激情婷婷| 五月天综合| 亚洲Av无码成人精品国产| 亚洲成a人在线观看久| 免费的很黄很污的全部视频| 天天射天天| 丁香婷婷五月| 日韩性爱啪啪视频| 久久婷婷电影网| 久久久久久九九九九| 欧美天天弄| 曰韩中文人妻视频| 内射中出日韩在线观看视频| ..日韩av毛片精品久久久| 色五月av| 97av在线视频| 91 刺激在线| 亚洲天堂区| 95精品在线| 欧美日韩黄色片一区二区三区四区人与兽做爱| 日韩亚洲美女一区久久| 国产有码一区| 观看免费区二区三区二| 女人一区| 亚洲色香|