在自然語言處理 (NLP) 中,有很多不同的算法可供選擇,選擇最適合特定任務的算法可能會很困難。為了解決這個問題,我們將對幾種 NLP 算法進行比較分析,根據它們的優勢和限制來進行評估。這項分析將提供對不同方法的優缺點的質性見解,幫助我們找出最有效的解決方案來處理各種 NLP 任務。
我們的評估基於文獻中的一般觀察和見解,而不是直接的實驗測試。通過檢查這些算法的關鍵特徵,本研究旨在指導選擇那些在現實應用中提供最佳性能和可擴展性的方法。
3.2. 斷詞
斷詞是自然語言處理 (NLP) 中的一個基本步驟,它涉及將文本分解為更小的單位,稱為標記 (tokens)。標記可以是單詞、短語,甚至是字符,具體取決於應用的需求。這一步對於文本分析至關重要,因為它幫助將原始文本轉換為算法可以處理的結構化格式。
3.8. 語義分析
S1 和 S2 通過相同的預訓練 BERT 模型 BERTshared 進行處理。
輸出如下:
T1 = [t11, t12, …, t1n]: S1 的上下文標記嵌入。
(3)
T2 = [t21, t22, …, t2m]: S2 的上下文標記嵌入。
(4)
池化層將標記嵌入組合成固定大小的句子嵌入。
常見的池化策略包括使用 [CLS] 標記的嵌入、平均所有標記嵌入或選擇嵌入中的最大值。每種方法提供了不同的方式來將標記級別的表示信息濃縮為固定大小的句子嵌入,具體取決於任務和期望的結果。
句子嵌入 E1 和 E2 之間的相似性使用適當的度量或特定任務的邏輯進行評估。對於相似性,計算餘弦相似度 Sim (E1, E2)。對於分類,將 E1 和 E2 連接,並將組合表示傳遞給分類器。
Output = Classifier ([E1; E2; ∣E1 − E2∣]).
(7)
輸出生成固定大小、語義豐富且經過微調的嵌入 E1 和 E2,以便在後續任務中表現良好。這些嵌入捕捉句子的基本意義,並結構化以支持在各種下游應用中的有效使用。
該過程通過首先使用共享的斷詞器對句子 S1 和 S2 進行斷詞,然後通過預訓練的 BERT 模型獲取上下文標記嵌入 (T1 和 T2),生成固定大小的句子嵌入 E1 和 E2。這些標記嵌入使用池化策略(如 [CLS] 標記、均值池化或最大池化)聚合,捕捉每個句子的整體語義意義。然後,這些句子嵌入用於相似性比較等任務,其中餘弦相似度測量句子之間的相關性,或分類,其中將嵌入連接並傳遞給分類器以預測句子之間的關係。生成的嵌入是緊湊的、語義豐富的,並針對各種下游任務進行優化,提供深度上下文表示,可用於比較句子相似性或分析自然語言處理任務中的句子級關係。
圖 4. 提議的 SBERT 架構用於隱性知識轉換。
SBERT 可以用來處理和比較文本數據,聚類相似概念,或從非結構化內容(如文檔、討論或訪談記錄)中識別隱含模式。以下是針對隱性知識轉換量身定制的概念性 SBERT 架構。
非結構化文本輸入可以來自多種來源,包括通過調查收集的員工反饋、績效評估和建議箱,以及來自音頻或視頻錄音的會議記錄、手寫筆記或摘要。此外,研究論文和案例研究提供了有價值的文本數據,通常來自學術數據庫或組織檔案。非正式通信,如電子郵件和聊天記錄,進一步補充了非結構化文本輸入,提供了來自團隊或跨組織的隨意互動的見解。
讓 S1、S2、…、Sn 成為一組非結構化句子,每個句子代表一個隱性知識的實例:
Si ∈ Rd for i = 1, 2, …, n
其中 Si 是一個句子,表示為單詞或標記的序列 (w1, w2, …, wm),d 代表每個標記嵌入的維度。
斷詞和標準化涉及對文本數據進行預處理,以提高其可用性進行分析。這包括去除噪音,例如冗餘短語和格式不一致,以確保更乾淨的輸入。然後可以使用像 SBERT 的斷詞器這樣的先進工具對句子進行斷詞,從而提取關鍵短語或主題句子以進行更集中的分析。
句子 Si 被斷詞為子詞單位 w1, w2, …, wm,並使用斷詞器映射到嵌入中。這生成標記嵌入:
E (Si) = [e1, e2, …, em] where ej ∈ Rk
(8)
其中 ej 是標記 wj 的嵌入,而 k 是嵌入維度。
每個句子或段落使用預訓練的 SBERT 模型進行處理,以生成密集的句子嵌入。這些嵌入捕捉文本的語義意義,使得對潛在信息的更細緻表示成為可能。
T(Si) = BERT (E(Si)) = [t1, t2, …, tm]
(9)
其中 tj ∈ Rk 是標記 wj 的上下文嵌入。
句子嵌入 ei 是通過對上下文標記嵌入 t1, t2, …, tm 應用池化函數生成的。池化可以以多種方式進行。
均值池化:
ei = 1/m ∑j = 1
(10)
其中 ei 是最終句子嵌入,即所有標記嵌入的均值。
最大池化:
ei = max (t1, t2, …, tm)
(11)
其中 ei 是標記嵌入的逐元素最大值。
要找出句子 Si 和 Sj 之間的相似性,我們計算它們的句子嵌入 ei 和 ej 之間的餘弦相似度:
Sim (Si, Sj)=𝑒𝑖.𝑒𝑗‖𝑒𝑖.𝑒𝑗‖Sim (Si, Sj)=ei.ejei.ej
(12)
其中 ei⋅ej 是兩個句子嵌入之間的點積,而 ∥ei∥ 和 ∥ej∥ 是嵌入的 L2 範數(大小)。
一旦計算出句子嵌入,就使用聚類算法(例如 k-means)將相似句子分組。k-means 算法包括以下步驟:
C1, C2,…, Ck (初始質心位置)
將每個句子分配給最近的質心。
Cluster (Si) = arg c∈C1, C2,…,Ck min ∥ei − c∥2
(13)
根據分配更新質心。
𝐶𝑗=1|𝐶𝑙𝑢𝑠𝑡𝑒𝑟𝑗|∑𝑆𝑖∈𝐶𝑙𝑢𝑠𝑡𝑒𝑟𝑗𝑒𝑖Cj=1Clusterj∑Si∈Clusterjei
(14)
其中 Clusterj 是分配給質心 Cj 的句子集合。
隱性知識通過基於嵌入的聚類和總結等技術轉換為顯性形式,例如規則、指導方針或模型。此外,可以將多個顯性知識來源結合起來,創建更高階的概念,利用嵌入來找出冗餘並揭示不同知識來源之間的協同作用。
可以以多種形式創建結構化的知識產物,包括簡明的摘要、組織的分類法和全面的知識圖,以系統地表示和管理信息。
這是一段示範如何使用 Sentence-BERT (SBERT) 嵌入和 k-means 聚類算法對非結構化文本數據進行聚類的偽代碼。以下是逐步解釋:
documents = [“隱性知識難以表達。”,
“有效的團隊通常通過實踐學習。”,
“合作促進創新。”]
from sentence_transformers import SentenceTransformer
model = SentenceTransformer (’paraphrase-MiniLM-L6-v2’)
embeddings = model.encode (documents)
from sklearn.cluster import KMeans
Num_clusters = 2 # 根據數據調整
Clustering_model = KMeans (n_clusters = num_clusters)
clustering_model.fit (embeddings)
Cluster_labels = clustering_model.labels_
Clusters = i: [] for i in range (num_clusters)
For idx, label in enumerate (cluster_labels):
Clusters [label].append (documents [idx])
For cluster, sentences in clusters.items ():
Print (f”Cluster cluster :”)
For sentence in sentences:
Print (f” – sentence”)
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!