機器學習·數據處理

前言

對于大規模數據,我們經常會使用python內置函數或者編寫腳本進行批量化處理,從而提高后續使用算法的效率。


1. 正則表達式

  • 定義:用于檢索、替換符合某個模式的文本,是文本預處理常用技術。
  • 基本語法
符號描述
.匹配除換行符?\n?以外的任意單個字符
\w匹配單個字母數字字符
\W匹配單個非字母數字字符
\d匹配單個數字
\D匹配單個非數字
\s匹配單個空格字符(空格、換行符、返回符、制表符等)
\S匹配任何非空格字符
\t匹配單個 tab 符
\n匹配單個換行符
\r匹配單個回車符
^匹配字符串的開頭
$匹配字符串的結尾
[..]匹配方括號中指定的字符
[^..]匹配方括號中指定以外的任何字符
{m,n}匹配前一個字符的出現次數在 m 至 n 次之間
a|b匹配a或b
?匹配前一個字符出現 0 或 1 次
+匹配前一個字符出現 1 次或多次
*匹配前一個字符出現 0 次或多次
\轉義字符,用于將被占用為正則表達的符號還原為原來的意思
()被括起來的表達式部分將作為分組,并返回相匹配的文本
  • Python 的?re?模塊
    • re.match():從字符串首字符開始匹配模式串。
    import re
    result = re.match(r'Hello', 'Hello, World!')
    if result:print("匹配成功,匹配到的內容是:", result.group())
    else:print("匹配失敗")
    
    • re.search():從字符串任意位置匹配模式串,找到第一個匹配即返回。
    result = re.search(r'World', 'Hello, World!')
    if result:print("匹配成功,匹配到的內容是:", result.group())
    else:print("匹配失敗")
    
    • re.findall():從字符串任意位置匹配模式串,返回所有匹配結果。
    text = "Apple and banana are fruits. I like apple juice."
    result = re.findall(r'apple', text, re.IGNORECASE)
    print("匹配到的所有結果:", result)
    
    • re.sub():將字符串中匹配模式串的部分替換為指定內容。
    text = "I have 3 apples and 2 bananas."
    new_text = re.sub(r'\d', 'X', text)
    print("替換后的文本:", new_text)
    


2. 分詞

  • 定義:將長文本分解為以詞為基本單位的數據結構,方便后續處理分析。
  • 中文分詞難點
    • 沒有統一標準,存在分詞歧義性。
    • 歧義詞難以切分,需結合上下文判斷。
    • 未登錄詞難以識別,需實時更新詞表。
  • 分詞方法
    • 基于詞典的匹配分詞方式:速度快、成本低,但適應性不強。
    • 基于統計的分詞方法:適應性較強,但成本高、速度慢。
    • 基于深度學習:準確率高、適應性強,但成本高、速度慢。
  • 常見分詞工具:Hanlp、Stanford 分詞、ansj 分詞器、哈工大 LTP、KCWS 分詞器、jieba、清華大學 THULAC、ICTCLAS。
  • jieba?分詞示例
    • 全模式:jieba.cut("文本", cut_all=True)
    import jieba
    seg_list = jieba.cut("我喜歡自然語言處理", cut_all=True)
    print("全模式分詞結果: ", "/ ".join(seg_list))
    
    • 精確模式:jieba.cut("文本", cut_all=False)
    seg_list = jieba.cut("我喜歡自然語言處理", cut_all=False)
    print("精確模式分詞結果: ", "/ ".join(seg_list))
    
    • 搜索引擎模式:jieba.cut_for_search("文本")
    seg_list = jieba.cut_for_search("小明碩士畢業于中國科學院計算所")
    print("搜索引擎模式分詞結果: ", ", ".join(seg_list))
    
    • 添加新詞:jieba.load_userdict(file_path);動態添加:jieba.add_word(word, freq=None, tag=None);動態刪除:jieba.del_word(word)
    jieba.add_word("自然語言處理")
    seg_list = jieba.cut("我喜歡自然語言處理", cut_all=False)
    print("添加新詞后精確模式分詞結果: ", "/ ".join(seg_list))
    jieba.del_word("自然語言處理")
    seg_list = jieba.cut("我喜歡自然語言處理", cut_all=False)
    print("刪除新詞后精確模式分詞結果: ", "/ ".join(seg_list))
    


3. 詞性標注

  • 定義:判定文本中每個詞的語法范疇,確定其詞性并加以標注。
  • 中文詞性標注難點:中文缺乏詞形態變化,兼類詞現象嚴重,詞類歧義排除任務量大。
  • 詞性標注方法
    • 基于規則的詞性標注方法。
    • 基于統計模型的詞性標注方法,如 HMM、CRF 等。
    • 基于統計方法與規則方法相結合的詞性標注方法。
    • 基于深度學習的詞性標注方法,如 LSTM+CRF、BiLSTM+CRF 等。
  • 常見詞性標注工具:jieba、SnowNLP、THULAC、StanfordCoreNLP、HanLP、NLTK、SpaCy(不支持中文)。
  • jieba?詞性標注示例jieba.posseg.cut("文本")
    import jieba.posseg
    sentence_taged = jieba.posseg.cut("我喜歡自然語言處理")
    for word, flag in sentence_taged:print(f"詞語: {word}, 詞性: {flag}")
    


4. 詞干提取與詞形還原

  • 詞干提取(Stemming):去除單詞的前后綴得到詞根,用于擴展檢索。
from nltk.stem import PorterStemmer
stemmer = PorterStemmer()
words = ["running", "jumps", "played"]
for word in words:print(f"原詞: {word}, 詞干: {stemmer.stem(word)}")
  • 詞形還原(Lemmatisation):基于詞典,將單詞的復雜形態轉變成最基礎的形態,用于文本預處理。
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
words = ["are", "better", "running"]
for word in words:print(f"原詞: {word}, 詞形還原后: {lemmatizer.lemmatize(word)}")
  • 兩者異同
    • 相同點:目標類似,結果部分交叉,主流實現方法類似。
    • 不同點:變換原理、算法復雜性、結果和應用領域各有側重。
  • 注意事項:只針對具有形態變化的語言,中文不存在這兩種預處理操作。


5. 命名實體識別(NER)

  • 定義:識別文本中具有特定意義的實體,如人名、地點名、組織機構名、時間等,用于語義挖掘及信息提取。
  • NER 方法
    • 基于規則的方法、基于字典的方法。
    • 傳統機器學習,如 HMM、CRF 等。
    • 深度學習,如 LSTM+CRF、BiLSTM+CRF 等。
  • 常見 NER 工具:Stanford NER、MALLET、Hanlp、nltk、SpaCy(不支持中文)、Crfsuite。
  • nltk?的 NER 示例
import nltk
from nltk.tokenize import word_tokenize
from nltk import pos_tag, ne_chunk
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('maxent_ne_chunker')
nltk.download('words')text = "Bill Gates founded Microsoft in 1975."
tokens = word_tokenize(text)
tagged = pos_tag(tokens)
entities = ne_chunk(tagged)
print(entities)


6. 文本的數據增強

  • 應用:解決文本數據類別不平衡問題,使模型能學習到樣本少的類別的特性。
  • 字符層面數據增廣方法
    • 同義詞替換:根據同義詞典或詞向量相似度替換詞匯。
    • 文本回譯:將文本翻譯成某一語言再反譯回來。
    • 詞匯順序變化:對某些文本在語塊層面重新排列語序。
  • nlpcda?工具示例
    • Randomword():隨機實體替換。
!pip install nlpcda
from nlpcda import Randomword
sentence = "今天是2024年10月1日:我去了超市"
smw = Randomword(create_num=3, change_rate=0.3)
result = smw.replace(sentence)
print('隨機實體替換結果:')
for r in result:print(r)
  • Similarword():隨機同義詞替換。
from nlpcda import Similarword
sentence = "今天天氣很好,適合出去游玩"
smw = Similarword(create_num=3, change_rate=0.8)
result = smw.replace(sentence)
print('隨機同義詞替換結果:')
for r in result:print(r)
  • baidu_translate():百度中英翻譯互轉實現增強。(需要申請 appid 和 secretKey)
from nlpcda import baidu_translatezh = '天氣晴朗,適合散步'
# 申請你的 appid、secretKey 分別填入 "xxx" 后代碼才能運行
en_s = baidu_translate(content=zh, appid='xxx',secretKey='xxx', t_from='zh', t_to='en')  # 中文轉英文
zh_s = baidu_translate(content=en_s, appid='xxx',secretKey='xxx', t_from='en', t_to='zh')  # 英文轉回中文
print("回譯后的文本:", zh_s)

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

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

相關文章

大廠出品!三個新的 DeepSeek 平替網站

前幾天給大家分享了幾個 DeepSeek 免費平替網站,今天又來更新啦。 新增了以下三個平臺:火山引擎、知乎直達、百度搜索。 經過實際測試,這幾個平臺的服務響應速度快,穩定性表現優異,基本不會出現宕機或服務器繁忙的情…

[創業之路-321]:創新開拓思維和經營管理思維的比較

目錄 一、概述 1.1、定義與內涵 1、創新開拓思維: 2、經營管理思維: 1.2、特點與優勢 1、創新開拓思維的特點與優勢: 2、經營管理思維的特點與優勢: 3、應用場景與限制 4、總結 二、創新開拓思維與經營管理思維&#xf…

《深度學習實戰》第1集:深度學習基礎回顧與框架選擇

本專欄系列博文旨在幫助讀者從深度學習的基礎知識逐步進階到前沿技術,涵蓋理論、實戰和行業應用。每集聚焦一個核心知識點,并結合實際項目進行實踐,避免空談理論,簡潔明快,快速切入代碼,所有代碼都經過驗證…

經典復古嘻哈說唱朋克風格專輯海報標題設計psai英文字體安裝包 Punk Of Sad — Ransom Font

Punk Of Sad 將確保您忘記所有簡潔的線條和企業潤色。這種經典的贖金風格字體是一封寫給 DIY 文化的情書,誕生于雜志、演出海報和地下場景的原始能量的剪切和粘貼混亂。每個字母都是不可預測的,都帶有叛逆的邊緣。 這種字體有三種不同的樣式 – Regular…

hot100-滑動窗口

3. 無重復字符的最長子串 給定一個字符串 s ,請你找出其中不含有重復字符的 最長子串的長度。 思路:雙指針指向不含重復字符的連續字串的頭和尾,用集合存儲子串中的元素,有重復時,左指針持續右移,無重復后…

MariaDB 歷史版本下載地址 —— 筑夢之路

MariaDB 官方yum源里面只有目前在維護的版本,而有時候對于老項目來說還是需要老版本的rpm包,國內很多鏡像站都是同步的官方倉庫,因此下載老版本也不好找,這里主要記錄下從哪里可以下載到歷史版本的MariaDB rpm包。 1. 官方歸檔網…

Linux-Ansible模塊進階

文章目錄 Copy和FetchFile模塊 Copy和Fetch copy和fetch模塊實踐 copy模塊需要注意的點:在收集日志之前需要對文件先進行改名或者備份fetch模塊需要注意的點:復制的源文件的路徑必須是文件不能是目錄建議全部使用絕對路徑,別使用相對路徑確保…

網絡空間安全(1)web應用程序的發展歷程

前言 Web應用程序的發展歷程是一部技術創新與社會變革交織的長卷,從簡單的文檔共享系統到如今復雜、交互式、數據驅動的平臺,經歷了多個重要階段。 一、起源與初期發展(1989-1995年) Web的誕生: 1989年,歐洲…

國產開源PDF解析工具MinerU

前言 PDF的數據解析是一件較困難的事情,幾乎所有商家都把PDF轉WORD功能做成付費產品。 PDF是基于PostScript子集渲染的,PostScript是一門圖靈完備的語言。而WORD需要的渲染,本質上是PDF能力的子集。大模型領域,我們的目標文件格…

Powershell Install deepseek

前言 deepseekAI助手。它具有聊天機器人功能,可以與用戶進行自然語言交互,回答問題、提供建議和幫助解決問題。DeepSeek 的特點包括: 強大的語言理解能力:能夠理解和生成自然語言,與用戶進行流暢的對話。多領域知識&…

6. 【.NET 8 實戰--孢子記賬--從單體到微服務--轉向微服務】--微服務基礎工具與技術--Ocelot 網關--概念與簡單入門

網關是一種位于客戶端和后端服務之間的服務,充當所有客戶端請求的單一入口。它的主要職責是接收所有的API調用,匯總各類請求,將其路由到適當的后端服務,并將響應返回給客戶端。網關不僅僅是一個簡單的反向代理,它還能夠…

網頁制作06-html,css,javascript初認識のhtml如何建立超鏈接

超鏈接有外部鏈接、電子郵件鏈接、錨點鏈接、空鏈接、腳本鏈接 一、內部鏈接 與自身網站頁面有關的鏈接被稱為內部鏈接 1、創建內部鏈接 1&#xff09;語法&#xff1a; <a href"鏈接地址"> …… </a> 2&#xff09;舉例應用&#xff1a; 3&#xf…

MySQL后端返回給前端的時間變了(時區問題)

問題&#xff1a;MySQL里的時間例如為2025-01-10 21:19:30&#xff0c;但是返回到前端就變成了2025-01-10 13:19:30&#xff0c;會出現小時不一樣或日期變成隔日的問題 一般來說設計字段時會使用datetime字段類型&#xff0c;這是一種用于時間的字段類型&#xff0c;而這個類型…

【算法與數據結構】單調隊列

目錄 單調隊列 使用單調隊列維護滑動窗口 具體過程&#xff1a; 代碼實現&#xff1a; 復雜度分析&#xff1a; 使用單調隊列優化動態規劃 例題 單調隊列 單調隊列(deque)是一種特殊的隊列&#xff0c;隊列中的元素始終按嚴格遞增或者遞減排列。這樣就可以保證隊頭元素…

AutoGen 技術博客系列 九:從 v0.2 到 v0.4 的遷移指南

本系列博文在掘金同步發布, 更多優質文章&#xff0c;請關注本人掘金賬號&#xff1a; 人肉推土機的掘金賬號 AutoGen系列一&#xff1a;基礎介紹與入門教程 AutoGen系列二&#xff1a;深入自定義智能體 AutoGen系列三&#xff1a;內置智能體的應用與實戰 AutoGen系列四&am…

深度學習每周學習總結Y1(Yolov5 調用官方權重進行檢測 )

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客Y1中的內容 &#x1f356; 原作者&#xff1a;K同學啊 | 接輔導、項目定制 ** 注意該訓練營出現故意不退押金&#xff0c;惡意揣測偷懶用假的結果冒充真實打卡記錄&#xff0c;在提出能夠拿到視頻錄像…

為AI聊天工具添加一個知識系統 之117 詳細設計之58 思維導圖及觀察者效應 之2 概念全景圖

&#xff08;說明&#xff1a;本文和上一篇問題基本相同&#xff0c;但換了一個模型 deepseek-r1&#xff09; Q1227、在提出項目“為使用AI聊天工具的聊天者加掛一個專屬的知識系統”后&#xff0c;我們已經進行了了大量的討論-持續了近三個月了。這些討論整體淋漓盡致體現了…

2012年IMO幾何預選題第6題

設有非等腰的 △ A B C \triangle ABC △ABC, O O O 和 I I I 分別為外心和內心. 在邊 A C AC AC, A B AB AB 上分別存在兩點 E E E 和 F F F, 使得 C D C E A B CDCEAB CDCEAB, B F B D A C BFBDAC BFBDAC. 設 ( B D F ) (BDF) (BDF) 和 ( C D E ) (CDE) (CDE)…

為Eclipse IDE安裝插件IBM編程助手watsonx Code Assistant

從Eclipse IDE 安裝 從Eclipse IDE 安裝插件&#xff1a; _1、在Eclipse IDE 中&#xff0c;單擊幫助菜單&#xff0c;然后選擇EclipseMarketplace。 _2、根據您計劃進行的工作類型選擇安裝方式&#xff1a; 有關代碼建議、代碼解釋、代碼文檔和單元測試的集成生成式人工智能&a…

Linux基本指令(三)+ 權限

文章目錄 基本指令grep打包和壓縮zip/unzipLinux和windows壓縮包互傳tar&#xff08;重要&#xff09;Linux和Linux壓縮包互傳 bcuname -r常用的熱鍵關機外殼程序 知識點打包和壓縮 Linux中的權限用戶權限 基本指令 grep 1. grep可以過濾文本行 2. 把包含9的文本行過濾出來了 …