自然語言處理觀念整理-6
搜尋, 主題建模(topic), 原文摘要, 推薦, 機器翻譯
範圍太過廣泛, 本文只能介紹觀念
主題概敍分為以下幾個任務:
搜尋, 主題建模(topic), 原文摘要, 推薦, 機器翻譯
- 搜尋: 為用戶查詢相關的內容
- 主題建模: 尋找一組文件裡面的主題或隱含模式
- 原文摘要: 建立原文的簡短版本
- 推薦: 顯示相關的文章
- 機器翻譯
- 問題回答系統: 為查詢提供答案而非一組文件
搜尋
搜尋功能又包含了幾種任務:
- 拚寫糾正
- 相關的查詢
- 段落提取
- 傳記的資訊提取
- 搜尋結果分類(all, news, image, video...)
常見的工作如下:
- 爬蟲: 如果需要外部資料
- 原文正規化: 單元化, 小寫, 停用詞移除, 詞幹提取...
- 建立索引: 必須將原文向量化, TFIDF是常見的作法 or BERT取得內容向量表示法, 再根據向量距離產生最接近查詢的內容的文件
- 指標納入引擎: 如瀏覽次數與銷售次數, 書評次數與評分, 或者用戶類型, 對書籍採取的動作
主題建模
主題建模是業界最常見的應用之一, 常用於文章的分群聚類, 可以在原文分類時使用, 希望可以辨識文字集中的關鍵字, 且不須要先了解那些字, 例如使用TFIDF, LDA, 應用
- 根據主題找出關鍵字來總結文件
- 偵測一段時間的社交媒體趨勢
- 推薦系統
LDA範例, 把文檔分為兩個topic
輸入是test.txt檔案,它是使用Jieba分詞之後的文字內容,通常每行代表一篇文件。
輸出則是這十篇文件的主題分佈,Shape(10L, 2L)表示10篇文件,2個主題
輸出則是這十篇文件的主題分佈,Shape(10L, 2L)表示10篇文件,2個主題
摘要生成
應用:
- 報紙標題(標題又必須符合報社本身的立場)
- 社群媒體操作(文章的小摘要吸引別人看)
- 內容農場, 產生很多類似的文章
- 新文章上上色摘要出來
- 以摘要建立索引非全文, 減少索引大小
這裡有一個摘要範例(使用gensim), 必須先將文字單元化(jieba, pyltp, NLTK)
萃取式摘要與抽象式摘要:
- 萃取式: 從中挑句子, 句子不會寫錯
- 抽象式: 經過一般消化後再重組出來, 輸入很長或輸出很長都不行 bert只能512 token, 可能要數十萬的pair訓練資料, 公司實作上很困難(困難)
- 如果文章太長, 各段落又有各自的意義, 可以做兩層摘要, 把所有段落摘要加起來或再丟摘要一次
- 排序每個段落或句子rank
- 做一些排列組合讓句子更通順
- 前一段或最後一段rank加高(baseline), 說不定還贏過生成(只能用在新聞等特定領域, 小說就不行)
- model: top3, textRank, bert-sum-ext, transformer, BART(長文檔), t5
- t5_model 範例, 但不敷使用
- 常問題摘要bert=512, longformer=4096但一般GPU都跑不動了要變2048, 資料也很難前處理(困難)
- 一個文件找摘要與多個文件找摘要
建議:
- 生成演算法對文字大小很敏感, 如果過大的文檔建議先片段化, 非使用全文
- 抽象式目前還在研究, 較少用於生產環境
範例套件:
問題回答系統
搜尋完並找出答案
Ref:
- 自然語言處理最佳實務, O'Reilly
沒有留言:
張貼留言