TF-IDF忽略詞序問題思考

自從開始做自然語言處理的業務,TF-IDF就是使用很頻繁的文本特征技術,他的優點很多,比如:容易理解,不需要訓練,提取效果好,可以給予大規模數據使用,總之用的很順手,但是人無千面好,花無百日紅,TF-IDF也有一些局限的地方,這次我們聊聊忽略詞序的問題和解決的思路。

忽略詞序

TF-IDF主要是計算詞頻和逆向詞頻了計算文本特征的(一個詞在文檔中出現的頻率越高(TF),同時在所有文檔中出現的頻率越低(IDF),則該詞對當前文檔的代表性越強。),那么對于詞的位置(就是詞的順序)實際上考慮的不多,但是中文當中,詞的位置可能導致反轉的效果,網上最多的舉例就是:‘人咬狗’和‘狗咬人’。那么這樣就導致了忽略詞序的問題。

解決思路

一、基礎改進方法

1. N-gram特征擴展

思路:將相鄰詞的組合作為新特征

from sklearn.feature_extraction.text import TfidfVectorizer
?
# 使用二元語法(bigram)
vectorizer = TfidfVectorizer(ngram_range=(1, 2)) ?# 同時包含unigram和bigram

優點

  • 簡單直接,兼容現有TF-IDF流程

  • 能捕獲局部詞序關系

缺點

  • 特征空間爆炸(n越大,維度越高)

  • 仍無法捕獲長距離依賴

2. 滑動窗口加權

思路:給窗口內的詞對添加位置權重

from collections import defaultdict
?
def sliding_window_tfidf(docs, window_size=3):# 先計算普通TF-IDF# 然后為窗口內的詞對添加額外權重co_occur = defaultdict(float)for doc in docs:words = doc.split()for i in range(len(words)-window_size+1):window = words[i:i+window_size]for j in range(len(window)):for k in range(j+1, len(window)):pair = (window[j], window[k])co_occur[pair] += 1# 將共現信息融入TF-IDF權重

二、進階混合方法

3. TF-IDF與詞嵌入結合

思路:用詞向量補充語義信息

import numpy as np
from gensim.models import Word2Vec
?
# 訓練或加載詞向量模型
w2v_model = Word2Vec(sentences, vector_size=100, window=5, min_count=1)
?
def enhanced_tfidf(doc):words = doc.split()tfidf_vec = tfidf_model.transform([doc]) ?# 常規TF-IDFw2v_vec = np.mean([w2v_model.wv[word] for word in words if word in w2v_model.wv], axis=0)return np.concatenate([tfidf_vec.toarray()[0], w2v_vec]) ?# 拼接兩種特征
4. 短語檢測預處理

思路:先識別固定短語再計算TF-IDF

from gensim.models.phrases import Phrases
?
# 自動檢測常見短語
phrases = Phrases(sentences)
doc_with_phrases = ["_".join(words) for words in phrases[sentences]]
?
# 然后在這些處理后的文本上計算TF-IDF

三、最新預訓練模型方法

5. BERT + TF-IDF混合

思路:結合上下文嵌入與傳統特征

from transformers import BertTokenizer, TFBertModel
import tensorflow as tf
?
bert_model = TFBertModel.from_pretrained('bert-base-chinese')
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
?
def get_bert_tfidf_features(text):# BERT特征inputs = tokenizer(text, return_tensors="tf", truncation=True, padding=True)outputs = bert_model(**inputs)bert_features = tf.reduce_mean(outputs.last_hidden_state, axis=1)# TF-IDF特征tfidf_features = tfidf_vectorizer.transform([text])# 合并特征return tf.concat([bert_features, tfidf_features.toarray()], axis=1)

四、設想

  1. 評估指標選擇

    • 對于分類任務:準確率/F1值

    • 對于檢索任務:MAP/MRR/NDCG

    • 計算開銷:特征維度/推理時間

  2. 實施路線圖

    
    
  3. 資源權衡

    • 低資源環境:N-gram + 短語檢測

    • 中等資源:TF-IDF + 詞嵌入

    • 充足資源:BERT/Transformer混合模型

當然還有很多方法,比如基于RNN也可以解決,由于篇幅就不在列舉了,歡迎各位給出跟多的方法大家一起交流。上面的這些方法可以根據具體場景組合使用,例如先進行短語檢測,再使用N-gram擴展,最后與詞向量特征拼接,能在多個層面上改善原始TF-IDF忽略詞序的問題。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75932.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75932.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75932.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL122 刪除索引

alter table examination_info drop index uniq_idx_exam_id; alter table examination_info drop index full_idx_tag; 描述 請刪除examination_info表上的唯一索引uniq_idx_exam_id和全文索引full_idx_tag。 后臺會通過 SHOW INDEX FROM examination_info 來對比輸出結果。…

Langchat平臺知識庫測試

平臺介紹: LangChat是Java生態下企業級AIGC項目解決方案,集成RBAC和AIGC大模型能力,幫助企業快速定制AI知識庫、企業AI機器人。 支持的AI大模型:Gitee AI / 阿里通義 / 百度千帆 / DeepSeek / 抖音豆包 / 智譜清言 / 零一萬物 /…

Vue3 Composition API 深度開發指南

Vue3 Composition API 深度開發指南 響應式系統核心解析 1.1 響應式原理解構 Vue3 基于 Proxy 實現響應式追蹤,其核心流程為: const reactiveHandler {get(target, key, receiver) {track(target, key) // 依賴收集return Reflect.get(target, key, …

基于自回歸模型的酒店評論生成

《DeepSeek大模型高性能核心技術與多模態融合開發(人工智能技術叢書)》(王曉華)【摘要 書評 試讀】- 京東圖書 我們使用新架構的模型完成情感分類,可以看到,使用注意力機制可以很好地對特征進行抽取從而完成二分類的情感分類任務…

關于轉置卷積

🧠 具體講解神經網絡中的轉置卷積(Transposed Convolution) 🧭 1. 轉置卷積的動機:為什么我們需要它? 標準卷積通常會降低特征圖的空間尺寸(比如從 64x64 → 32x32),這對…

JavaScript 模塊化詳解( CommonJS、AMD、CMD、ES6模塊化)

一.CommonJS 1.概念 CommonJS 規范概述了同步聲明依賴的模塊定義。這個規范主要用于在服務器端實現模塊化代碼組 織,但也可用于定義在瀏覽器中使用的模塊依賴。CommonJS 模塊語法不能在瀏覽器中直接運行;在瀏覽器端,模塊需要提前編譯打包處理…

TCP BBR 的優化

前段時間,老板發了篇資料,下面是我學習的相關記錄整理。 https://aws.amazon.com/cn/blogs/china/talking-about-network-optimization-from-the-flow-control-algorithm/ PS:ubuntu24默認使用的tcp控制算法。還是 cubic sysctl net.ipv4.tc…

什么是異步?

什么是異步? 異步是一個術語,用于描述不需要同時行動或協調就能獨立運行的流程。這一概念在技術和計算領域尤為重要,它允許系統的不同部分按自己的節奏運行,而無需等待同步信號或事件。在區塊鏈技術中,異步是指網絡中…

SSM婚紗攝影網的設計

🍅點贊收藏關注 → 添加文檔最下方聯系方式咨詢本源代碼、數據庫🍅 本人在Java畢業設計領域有多年的經驗,陸續會更新更多優質的Java實戰項目希望你能有所收獲,少走一些彎路。🍅關注我不迷路🍅 項目視頻 SS…

石頭剪刀布游戲

自己寫的一個石頭剪刀布游戲&#xff0c;如果有需要更改的地方請指出 #define _CRT_SECURE_NO_WARNINGS // scanf_s編寫起來太過于麻煩&#xff0c;直接把這個警告關掉&#xff0c;便于編寫。 #include <stdio.h> #include <stdlib.h> #include <time.h> //…

大數據系列之:Kerberos

大數據系列之&#xff1a;Kerberos 基本概念工作流程安全特性應用場景總結加密原理Kerberos認證流程更改您的密碼授予賬戶訪問權限票證管理Kerberos 票據屬性使用 kinit 獲取票據使用 klist 查看票據使用 kdestroy 銷毀票據.k5identity 文件描述 Kerberos 是一種網絡認證協議&a…

WPF 免費UI 控件HandyControl

示例效果和代碼 直接可以用 Button 按鈕 | HandyOrg 1.安裝 , 輸入 HandyControl 2.<!--配置HandyControl--> <!--配置HandyControl--> <ResourceDictionary Source"pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/> …

windows部署docker

1.下載docker 打開瀏覽器&#xff0c;訪問 Docker Desktop 下載頁面。 2.安裝 Docker Desktop 運行安裝程序&#xff1a; 雙擊下載的 Docker Desktop 安裝包&#xff0c;啟動安裝程序。 選擇安裝選項&#xff1a; 按照屏幕上的指示進行操作。建議選擇默認選項&#xff0c;包…

【Linux】遠程登錄時,使用圖形界面報錯:MoTTY X11 proxy: Unsupported authorisation protocol

1、問題描述 使用 MobaXterm 遠程登錄Ubuntu后,使用sudo權限運行圖形界面程序報錯: MoTTY X11 proxy: Unsupported authorisation protocol (gpartedbin:10518): Gtk-WARNING **: 22:01:34.377: cannot open display: localhost:10.02、查看SSH配置 修改 SSH 服務端配置,…

解決 Hugging Face SentenceTransformer 下載失敗的完整指南:ProxyError、SSLError與手動下載方案

問題背景 在使用 Hugging Face 的 SentenceTransformer 加載預訓練模型 all-MiniLM-L6-v2 時&#xff0c;遇到了以下錯誤&#xff1a; 代理連接失敗&#xff08;ProxyError / SSLError: KRB5_S_TKT_NYV&#xff09;大文件下載中斷&#xff08;unexpected EOF while reading&a…

MySQL——DQL的單表查詢

1、查詢表中所有的字段&#xff08;列&#xff09; 語法&#xff1a;select * from 表名; * 是通配符&#xff0c;用來表示所有的字段&#xff08;列&#xff09;。 select 表示查詢哪些列。 from 表示從哪張表中查詢。 2、查詢表中指定的字段 語法&#xff1a;select 列…

開源RuoYi AI助手平臺的未來趨勢

近年來&#xff0c;人工智能技術的迅猛發展已經深刻地改變了我們的生活和工作方式。 無論是海外的GPT、Claude等國際知名AI助手&#xff0c;還是國內的DeepSeek、Kimi、Qwen等本土化解決方案&#xff0c;都為用戶提供了前所未有的便利。然而&#xff0c;對于那些希望構建屬于自…

[WUSTCTF2020]CV Maker1

進來是個華麗的界面&#xff0c;我們先跟隨這個網頁創造一個用戶 發現了一個上傳端口&#xff0c;嘗試上傳一個php文件并抓包 直接上傳進不去&#xff0c;加個GIF89A uploads/d41d8cd98f00b204e9800998ecf8427e.php 傳入 并且報告了 上傳路徑&#xff0c;然后使用蟻劍連接

Spring 中的 IOC

&#x1f331; 一、什么是 IOC&#xff1f; &#x1f4d6; 定義&#xff08;通俗理解&#xff09;&#xff1a; IOC&#xff08;Inversion of Control&#xff0c;控制反轉&#xff09; 是一種設計思想&#xff1a;對象不再由你自己創建和管理&#xff0c;而是交給 Spring 容器…

Vue2-實現elementUI的select全選功能

文章目錄 使用 Element UI 的全選功能自定義選項來模擬全選 在使用 Element UI 的 el-select組件時&#xff0c;實現“全選”功能&#xff0c;通常有兩種方式&#xff1a;一種是使用內置的全選功能&#xff0c;另一種是通過自定義選項來模擬全選。 使用 Element UI 的全選功能…