技術文章
技術問答
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
30
0
佛心分享-IT 人自學之術
Python學習馬拉松:30天挑戰
系列 第
30
篇
Day30. 實作練習:馬可夫鏈文本生成器 Markov Chain Text Composer
16th鐵人賽
sheep
2024-10-14 14:56:40
849 瀏覽
分享至
教學來源:https://www.youtube.com/watch?v=8ext9G7xspg
這個專案是一個基於馬可夫鏈(Markov Chain)的文本生成器,透過分析文本中的單詞之間的關聯,來生成新文本。
➤ 馬可夫鏈文本生成器的核心概念是透過「當前狀態」來決定「下一個狀態」,在這裡,狀態指的是一個單詞。換句話說,這個程式的目標是根據已知文本中單詞的排列規則,模擬生成類似的文本。
程式碼:
➤ compose.py:
➤ graph.py:
執行3次程式碼的結果:
程式說明:
➤ compose.py:
get_words_from_text函數:
-從給定的文本檔案中讀取內容,去除標點符號,將文本轉換為小寫,並分割成最多 1000 個單詞的列表。
make_graph函數:
-建立一個圖(Graph)來表示單詞之間的關聯。每個單詞是圖中的一個節點(Vertex),如果兩個單詞在文本中連續出現,則在它們之間建立一條邊,邊的權重表示它們一起出現的頻率。
-該圖的功能是幫助後續生成文本時,根據單詞的出現頻率來預測下一個單詞。
compose函數:
-使用生成的圖,隨機選擇一個單詞作為起點,並根據圖中節點之間的關聯逐步生成文本。文本的長度由 length 參數決定(默認為 50 個單詞)。
main函數:
-讀取指定文本檔案,提取單詞,建立單詞之間的關聯圖,並最終生成一段隨機文本。
➤ graph.py:
Vertex 類別:
-圖中的節點,表示一個單詞。每個節點都有一個 adjacent 字典,用來儲存與其他單詞的關聯及其權重。當兩個單詞一起出現時,增加它們之間邊的權重。
-還包含一個方法 next_word(),用來根據關聯單詞的權重,隨機選擇下一個單詞。
Graph 類別:
-圖結構,用來管理所有單詞及它們之間的關聯。每個單詞都是圖中的一個節點,可以根據關聯性預測下一個單詞。
-generate_probability_mappings 用來為每個單詞生成一個概率映射,讓文本生成器根據權重來選擇下一個單詞。
留言
追蹤
檢舉
上一篇
Day29. 實作練習:圈圈叉叉Tic-Tac-Toe --AI
系列文
Python學習馬拉松:30天挑戰
共
30
篇
目錄
RSS系列文
訂閱系列文
2
人訂閱
26
Day26. 實作練習:Binary Search
27
Day27. 實作練習:踩地雷遊戲 Minesweeper
28
Day28. 實作練習:數獨解決器Sudoku Solver
29
Day29. 實作練習:圈圈叉叉Tic-Tac-Toe --AI
30
Day30. 實作練習:馬可夫鏈文本生成器 Markov Chain Text Composer
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19837
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
Seeed XIAO ESP32-S3 透過 UART (921600) 無法發送 AT 指令到 Grove Vision AI V2 (Himax WE2)
Windows XP作業系統,程式存取SQL SERVER 2025失敗
SAP B1 如何將"自定義表格"匯出並且匯入到另一個資料庫
webview cab 封包檔
熱門回答
Windows XP作業系統,程式存取SQL SERVER 2025失敗
SAP B1 如何將"自定義表格"匯出並且匯入到另一個資料庫
熱門文章
我不信任 AI 的自律,所以把「限制」寫死在資料庫裡
大家都怕依賴 AI,但真正天天用 AI 的人似乎沒那麼怕
AI Agent 時代的下一個問題:當第 101 次決策出錯時,誰來負責?
從 Vibe Coding 到 Agentic Engineering:AI 寫程式真正缺的不是靈感,是驗證
ERP 該為哪一代前端技術下注?
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}