為了誇誇聊天機器人,爬了一份誇誇語料庫
上週為了娛樂,寫了一篇《 一行Python程式碼實現誇誇聊天機器人 》,雖然只有幾十條人工整理的通用誇誇語料,但是貌似也能應付一些簡單需求。不過這篇文章在微博、AINLP微信公眾號、 知乎專欄 推送後,還是有很多同學強烈建議豐富語料庫。這個建議其實是很不錯的,所以週末認真調研了一番,決定從豆瓣上的誇誇小組入手,這裡面有很多現成的語料,至於混進微信、QQ誇誇群,收集語料,我覺得不太現實。
豆瓣上有很多誇誇小組,貌似最大的莫過於“相互表揚小組”,最近因為這股誇誇風,據說這個小組已經開始限制加入新人了,我針對這個小組寫了一個小爬蟲,爬了一份誇誇語料,總計2萬6千多個帖子,採集了標題、內容和回覆的相關資訊,儲存為json格式,1個帖子1條,大概是這樣的:
{"title": "因為沒有男朋友,求誇", "url": "https://www.douban.com/group/topic/135844056/", "author": "71277500", "last_reply_time": "03-17 16:40", "content": "笨人原本一個人好好的,都單了兩三年了,一直覺得挺開心的。最近不知道抽了什麼風,突然特別想找個男朋友。但是但是,偏偏找不到靠譜的男朋友!現在一個人睡不著,沒想明白這事,求誇。\n", "replies_num": "14", "replies": [{"content": "你這麼可愛肯定會有一個很好很好的人在等你!", "post_id": "135844056", "comment_id": "1834208628", "user_id": "189783421", "pub_time": "2019-03-16 01:08:38"}, {"content": "最好的肯定要晚點出現哦", "post_id": "135844056", "comment_id": "1834208775", "user_id": "189783421", "pub_time": "2019-03-16 01:08:52"}, {"content": "“笨人”,剛看到開頭就笑了", "post_id": "135844056", "comment_id": "1834282396", "user_id": "192799520", "pub_time": "2019-03-16 07:50:50"}, {"content": "一個好可耐的寶寶", "post_id": "135844056", "comment_id": "1834282931", "user_id": "192799520", "pub_time": "2019-03-16 07:52:24"}, {"content": "也許明天就出現了", "post_id": "135844056", "comment_id": "1834290527", "user_id": "185989534", "pub_time": "2019-03-16 08:11:38"}, {"content": "你知道有一個適合你的那個在等你吧", "post_id": "135844056", "comment_id": "1834308924", "user_id": "192597621", "pub_time": "2019-03-16 08:46:23"}, {"content": "如果沒有男朋友,肯定是你太優秀", "post_id": "135844056", "comment_id": "1834313229", "user_id": "171520899", "pub_time": "2019-03-16 08:53:19"}, {"content": "沒有男朋友多好,省錢", "post_id": "135844056", "comment_id": "1834320533", "user_id": "130379006", "pub_time": "2019-03-16 09:03:42"}, {"content": "哈哈,謝謝好可愛的你呀!", "post_id": "135844056", "comment_id": "1835717925", "user_id": "71277500", "pub_time": "2019-03-17 16:16:58"}, {"content": "有道理", "post_id": "135844056", "comment_id": "1835718260", "user_id": "71277500", "pub_time": "2019-03-17 16:17:22"}, {"content": "也許吧,哈哈哈", "post_id": "135844056", "comment_id": "1835718395", "user_id": "71277500", "pub_time": "2019-03-17 16:17:32"}, {"content": "原本想寫本人,一不小心錯別字,看樣子還是很符合的", "post_id": "135844056", "comment_id": "1835719069", "user_id": "71277500", "pub_time": "2019-03-17 16:18:17"}, {"content": "沒有,只是單純地覺得很可愛,很符合你寫一段話的文風ཽ……退一步講,古人講究謙辭,稱呼自己要自謙,本人要說鄙人,你用“笨人”活潑可愛,也能稱得上是一種自謙,還是你自創的,有趣", "post_id": "135844056", "comment_id": "1835734308", "user_id": "192799520", "pub_time": "2019-03-17 16:35:21"}, {"content": "哈哈,有道理,我懂了", "post_id": "135844056", "comment_id": "1835738373", "user_id": "71277500", "pub_time": "2019-03-17 16:40:00"}]}
寫到這裡,估計還是會有同學準備留言索要資料了,因為即使上次區區幾十條語料,隨便google一下就可以得到的“誇誇語料”都有同學留言索取,所以這裡準備多說幾句,關於誇誇聊天機器人,關於誇誇語料庫。
上個周,在看到清華劉知遠老師的評論後,我是用娛樂的心態寫了上週的那篇文章:《 一行Python程式碼實現誇誇聊天機器人 》,沒想到,反響還不錯,甚至有一些同學提了很好的建議。所以當週末認真思考這件事的可行性時,突然覺得,誇誇聊天機器人是一個絕好的機器學習實踐專案:僅從一個idea出發,怎樣做一個不錯的誇誇聊天機器人?
作為自然語言處理四大難題之一的自動問答,個人覺得目前還遠遠不夠“智慧”,雖然市面上有很多聊天機器人,但是觀察來看,以娛樂的心態來對話是可以的,或者完成一些簡單的任務是沒有問題的,例如詢問天氣,但是如果抱著很高的期望,很多輪對話下來,基本可以認為這個聊天機器人“不靠譜”, “答非所問”,甚至是個“智障”。雖然通用領域的智慧問答或者聊天機器人還有很長的路要走,但是如果把這個問題限定在垂直領域或者很小的需求範圍,那麼問題可能就有解了,例如誇誇聊天機器人,需求就很簡單:做啥都誇。簡單的就是隨便誇,複雜一點或者個性化的就是誇某個點、某件事、某個人,前者嗎,就是上次《 一行Python程式碼實現誇誇聊天機器人 》做得事情,準備一些通用誇獎的語料,然後隨機誇;後者,需要準備一些誇誇規則和誇誇語料庫。
開個玩笑,二十一世紀什麼最貴?當然是資料了,確切的說,是面向特定任務的特定資料。現在不缺機器學習框架,不缺演算法,不缺機器,甚至不缺“人”,缺什麼,就缺資料。這段時間,因為誇誇群的興起,很多人看到了商機,說不定哪一天你的老闆把你找來,直接給扔給你一個任務:做一個誇誇聊天機器人?怎麼辦,當然要調研啦。花了大半天時間,你瞭解了聊天機器人的前世今生,發現了人工智慧標記語言AIML,知道了Chatbot的種種玩法,基於規則的、基於機器學習模型的、基於知識圖譜的等等等等,甚至還有很多智慧問答開源框架可以直接套用,最後,當你興高采烈的準備動手實踐的時候,你突然發現,還沒有資料,你需要資料,需要誇誇語料庫。
萬事俱備,只欠資料,怎麼辦,趕緊學一下爬蟲知識吧,我一直推薦入門這行的同學從爬蟲學起,不是讓你以後做一個爬蟲工程師,而是希望你可以從一線觸控資料,有資料sense,資料的重要性在未來只會越來越大。當然學習的方法有很多種,可以自學,可以跟學,可以買書,可以上課,最重要的是實踐。所以這個時候,可以一邊學習一邊針對豆瓣的或者其他誇誇小組做定向爬蟲,不過豆瓣的防爬措施也很厲害,稍不注意,你的ip就會被封了。當然,做爬蟲就是一個鬥智鬥勇的過程,如果你需要系統的學習爬蟲知識,這裡推薦一門課程: Python爬蟲工程師
僅僅有了誇誇資料還不夠,還需要資料清洗和資料組織,種種準備工作之後,才可以嘗試各種先進的智慧問答方法和框架。當然,我這邊還沒有升級誇誇聊天機器人,還需要繼續豐富語料庫,還需要做很多工作才能進入到模型訓練階段,感興趣的同學,可以繼續等待。最後,提供500條誇誇語料庫樣本資料給感興趣的同學,還是關注公眾號AINLP,回覆"kuakua"獲取:
不過還是希望你能親自動手,自己去爬取和整理這份語料,然後做個誇誇聊天機器人專案,整個過程體會一輪,相信對於文字挖掘專案的體驗會更深刻一些。關於誇誇聊天機器人,這裡還會繼續下去,歡迎留言,歡迎一起探討。
注:原創文章,轉載請註明出處及保留連結“我愛自然語言處理”: http://www.52nlp.cn