Python----NLP自然語言處理(英文分詞器--NLTK)

一、NLTK_介紹

????????NLTK(Natural Language Toolkit,自然語言處理工具包),一個主要用于清洗和處理英文文本的Python工具包。它有很多的功能,我們主要使用的是它的分詞功能,之前講過中文分詞是比較復雜的,但是英文分詞只需要按照空格分割就好了,英文分詞的重點是詞形還原,自定義詞組等等這些需求。英文的它會隨著單復數、時態、人稱等等發生拼寫的變化。我們在分詞的時候就要還原這個單詞的原型。

安裝:

????????pip install nltk -i https://pypi.tuna.tsinghua.edu.cn/simple?

下載語料庫

import nltk
nltk.download()

下載punkt,averaged_perceptron_tagger,averaged_perceptron_tagger_eng,wordnet,stopwords

二、分詞

# 導入NLTK的分詞工具
from nltk import word_tokenize# 待處理的英文文本
text = '''
I have my own name. They all say it's a nice name. I'd like to know what your name is.
'''# 使用word_tokenize進行分詞
tokens = word_tokenize(text)# 將所有單詞轉為小寫
res = [i.lower() for i in tokens]# 輸出結果
print(res)
['i', 'have', 'my', 'own', 'name', '.', 'they', 'all', 'say', 'it', "'s", 'a', 'nice', 'name', '.', 'i', "'d", 'like', 'to', 'know', 'what', 'your', 'name', 'is', '.']

三、詞形還原

????????NLTK可以將英文中的動詞,名詞,形容詞等詞形還原為原型

# 詞形還原
from nltk.stem import WordNetLemmatizer
# 創建詞形還原對象
wnl = WordNetLemmatizer()
# 詞形還原,需要傳入詞和詞形
print(wnl.lemmatize('better', pos='a'))
print(wnl.lemmatize('saddest', pos='a'))words = ['cars', 'men',"running","ate","saddest","fancier"]
pos_tags = ['n','n','v','v','a','a']for i in range(len(words)):print(words[i]+"--->"+ wnl.lemmatize(words[i],pos_tags[i]))

四、Text對象

????????Text是NLTK中一個非常有用的對象,它提供了一種方便的方式來處理和分析文本數據。他可以進行文本統計,詞頻可視化,文本搜索等等文本操作。

from nltk.text import Text
from nltk import word_tokenize
text='''
I have my own name. They all say it's a nice name. I'd like to know what your name is.
'''
# 分詞
tokens = nltk.word_tokenize(text)# 創建Text對象
text = nltk.Text(tokens)# 詞頻統計
print(text.count('to'))# 計算每個單詞的頻率
fdist = text.vocab()
print(fdist.most_common(10)) # 輸出前10個最頻繁的詞# 查找某個單詞的上下文
print(text.concordance('nice'))# 繪制詞頻個分布圖
text.plot(5) # 繪制前5個最頻繁的詞
1
[('name', 3), ('.', 3), ('I', 2), ('have', 1), ('my', 1), ('own', 1), ('They', 1), ('all', 1), ('say', 1), ('it', 1)]
Displaying 1 of 1 matches:
e my own name . They all say it 's a nice name . I 'd like to know what your n

五、停用詞

# 導入NLTK庫中的停用詞語料庫
from nltk.corpus import stopwords# 打印所有可用的停用詞語言列表
print(stopwords.fileids())  # 輸出例如['arabic', 'azerbaijani', 'danish'...]# 獲取英語停用詞列表
english_stopwords = stopwords.words('english')  # 獲取英語停用詞列表
print(english_stopwords)  # 打印輸出英語停用詞,如['i', 'me', 'my'...]'''
中文注釋說明:
1. stopwords.fileids() - 查看NLTK支持的所有停用詞語言
2. stopwords.words('language') - 獲取指定語言的停用詞列表
3. 英語停用詞包含"a", "the", "is"等常見但對語義分析無重要意義的詞匯
'''

過濾停用詞?

text = '''
I have my own name. They all say it's a nice name. I'd like to know what your name is.
'''# 使用word_tokenize對文本進行分詞
tokenize = word_tokenize(text)# 創建不重復的小寫單詞集合
tokenize_word = set({i.lower() for i in tokenize})# 過濾停用詞,只保留非停用詞
[i for i in tokenize_word if i.lower() not in english_stopwa]'''
代碼功能說明:
1. 定義了一個英文文本字符串
2. 使用word_tokenize將文本分割成單詞列表
3. 通過集合推導式生成不重復的小寫單詞集合
4. 最后使用列表推導式過濾掉停用詞,只保留有實際意義的詞匯

六、詞性標注

from nltk.tokenize import word_tokenize
from nltk.tag import pos_tagtext = "It's a leading platform for building Python programs to work with human language data."
tokens = word_tokenize(text)  # 分詞
tags = pos_tag(tokens)        # 詞性標注print(tags)
POS Tag指代
CC并列連詞
CD基數詞
DT限定符
EX存在詞
FW外來詞
IN介詞或從屬連詞
JJ形容詞
JJR比較級的形容詞
JJS最高級的形容詞
LS列表項標記
MD情態動詞
NN名詞單數
NNS名詞復數
NNP專有名詞
PDT前置限定詞
POS所有格結尾
PRP人稱代詞
PRP$所有格代詞
RB副詞
RBR副詞比較級
RBS副詞最高級
RP小品詞
UH感嘆詞
VB動詞原型
VBD動詞過去式
VBG動名詞或現在分詞
VBN動詞過去分詞
VBP非第三人稱單數的現在時
VBZ第三人稱單數的現在時
WDT以wh開頭的限定詞

七、分塊功能

????????英文中的詞組數量非常多,很難全部表示出來,但英文的詞組構成有一定規律,比如動詞短語是動詞+名詞,形容詞短語是形容詞+名詞。NLTK 提供了正則表達式分塊的方式來識別和構建自定義詞組。

????????我們可以定義的正則表達式來匹配和組合文本中的詞匯,從而創建自定義的詞組。

from nltk.tokenize import word_tokenize
from nltk import pos_tag, RegexpParser# 示例文本
text = "The quick brown fox jumped over the lazy dog."# 分詞和詞性標注
tokens = word_tokenize(text)
tagged = pos_tag(tokens)# 定義名詞短語規則
grammar = """NP: {<DT>?<JJ>*<NN>}  # 名詞短語
"""# 創建語法分析器
parser = RegexpParser(grammar)
tree = parser.parse(tagged)# 打印結果
data = tree.pretty_print()# 提取并輸出詞組,查找所有名詞短語
for subtree in tree.subtrees(filter=lambda t: t.label() == 'NP'):print(' '.join([token for token, pos in subtree.leaves()]))

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

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

相關文章

傳統瀏覽器過時了?Dia如何用AI重新定義上網體驗

歡迎來到我的博客&#xff0c;代碼的世界里&#xff0c;每一行都是一個故事&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交給時間 &#x1f3e0; &#xff1a;小破站 傳統瀏覽器過時了&#xff1f;Dia如何用AI重新定義上網體驗它是什么核心功能搜索編程左右互動感謝…

基于DTLC-AEC與DTLN的輕量級實時語音增強系統設計與實現

基于DTLC-AEC與DTLN的輕量級實時語音增強系統設計與實現 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。 1. 引言 在當今的互聯網通信時代,實時語音通信已成為人們日常生活中不可或缺的一部分。然而,語音通信質量常…

Attu-Milvus向量數據庫可視化工具

本文介紹了如何安裝可視化工具Attu&#xff0c;包括使用Docker鏡像啟動并訪問Attu服務。 目錄 前言 一、Attu安裝 1. Docker容器安裝 2. 桌面程序安裝 二、使用 Milvus Web U 前言 Attu是一款專為Milvus向量數據庫打造的開源數據庫管理工具&#xff0c;提供了便捷的圖形化…

高效檢測數據突變的MDAM算法詳解

在數據分析領域&#xff0c;我們經常需要檢測數據序列中的異常變化。今天給大家介紹一種簡單但非常有效的算法——MDAM (Mean Drift Accumulation Monitor)&#xff0c;它能幫你輕松發現數據中的均值突變現象&#xff01;1. &#x1f50d; 算法原理累計數均值突變檢測算法(MDAM…

記錄一道sql面試題3

題目&#xff1a;有一張表a,和一張表ba:id age name1 18 kethy2 32 kavin3 22 tonyb:id dept description2 sale today2 dev sunday提問&#xff1a;將a和b兩張表左連接查詢&#xff0c;條件是a.id b.id會得到什么結果。查詢的字段為a.*,b.* 。說明&#xff1a;左表 a 中 id1 …

linux系統------LVS+KeepAlived+Nginx高可用方案

目錄 一、環境搭建 1.環境準備 2.安裝ipvsadm 和 安裝 keepalived&#xff08;Lvs服務器&#xff09; 3.為兩臺RS配置虛擬ip&#xff08;nginx服務器&#xff09; 1.配置虛擬網絡子接口&#xff08;回環接口&#xff09; 2.修改內容如下: 3.配置ARP 二、KeepalivedLvsN…

【MySQL】性能優化實戰指南:釋放數據庫潛能的藝術

文章目錄MySQL性能優化實戰指南&#xff1a;釋放數據庫潛能的藝術&#x1f680; 引言為什么需要MySQL性能優化&#xff1f;&#x1f4cb; 性能優化基礎知識MySQL性能瓶頸分析1. 硬件資源瓶頸2. MySQL內部瓶頸&#x1f3c6; 優化配置策略大全&#x1f4be; 內存配置優化InnoDB緩…

Unity 3D碰撞器

在Unity中&#xff0c;碰撞器&#xff08;Collider&#xff09;是用于檢測物體之間碰撞的組件&#xff0c;它們定義了物體的物理邊界。碰撞器與剛體&#xff08;Rigidbody&#xff09;配合使用&#xff0c;實現物理模擬。下面我將按您的要求&#xff0c;從碰撞器的種類、常用參…

Windows批處理實現帶時間戳ping

windows環境 &#xff0c; 將以下代碼保存為 .bat文件 echo off echo.---------------------------------------------------------- echo.----------------------------------------------------------- echo off set /p hostplease input your destination ip : set logfi…

GeoPandas 城市規劃:Python 空間數據初學者指南

安裝和設置 在深入研究數據之前&#xff0c;我們需要準備好工具。設置 GeoPandas 及其必要的依賴項是第一步。 我們將在 Google Colab 中完成此操作。 !pip install geopandas contextily matplotlib 空間數據有多種格式&#xff0c;但 GeoJSON 是常見且易于訪問的格式。Ge…

力扣面試150題--環形子數組的最大和

Day 80 題目描述思路 初次做法&#xff1a;在昨天代碼的基礎上修改 計算普通子數組的最大和 使用動態規劃計算以每個位置為起點的最大子數組和&#xff08;存儲在 val 中&#xff09;&#xff0c;并更新全局最大值 rightmax。計算后綴和與前綴和 sum[i]&#xff1a;從位置 i 到…

python類Keys

類Keys的定義:Elass Keys (object): 程軒開Set of special keys codes.#n# 第 15 章 網絡爬蟲 合情些準出照地限公軹 esms0 pro 瘀 Δ器代芻奄燉慧 圖 15-39 工件肉業魚光得 國有上子 理人場營&#xff0c;有司;可有B 相關圍書 圖 15-40 頁源代碼 ython". 名可能不鞋 NUL…

svn如何設置忽略文件夾或者文件的提交

使用svn&#xff0c;每次提交代碼時&#xff0c;都會把java的編譯文件target&#xff0c;或者前端的node_modules&#xff0c;dist等不需要提交的目錄或這文件&#xff0c;列出來實現。通過配置svn&#xff0c;可以在提交代碼時&#xff0c;自動忽略這些不需要提交到倉庫的文件…

MonoGame 游戲開發框架日記 -06

第六章&#xff1a;動畫類以及動畫精靈 好久不見家人們好久沒更新MonoGame系列了&#xff0c;不是主包棄坑了&#xff0c;主要是主包最近忙著搞項目學科一找暑假工打&#xff0c;這不一閑下來就立刻馬不停蹄的來給大家更新了&#xff0c;今天的教程代碼部分比較多接下來我們正式…

LVS四種工作模式深度解析

LVS&#xff08;linux virual server&#xff09;LVS四種工作模式深度解析 LVS-NAT模式 四臺虛擬機 火墻關閉 關閉火墻 systemctl stop firewalldsystemctl disable firewalld關閉開機自啟火墻1.clienteth0 IP&#xff1a;172.25.254.1002.lvs eth0ip :172.25.254.200; eth1ip:…

[設計模式]C++單例模式的幾種寫法以及通用模板

之前在這篇文章中簡單的介紹了一下單例模式的作用和應用C中單例模式詳解_c單例模式的作用-CSDN博客&#xff0c;今天我將在在本文梳理單例模式從C98到C11及以后的演變過程&#xff0c;探討其不同實現方式的優劣&#xff0c;并介紹在現代C中的最佳實踐。 什么是單例模式&#x…

小架構step系列19:請求和響應

1 概述作為Web程序&#xff0c;通用形式是發起HTTP請求并獲取返回的結果&#xff0c;在這個過程中&#xff0c;需要把請求映射到代碼的接口上&#xff0c;提供這種接口的類一般稱為Controller&#xff0c;也就是需要把請求映射到Controller的接口方法上&#xff0c;把請求的參數…

論文分享 | LABRADOR:響應引導的針對物聯網設備的黑盒模糊測試

由于固件仿真以及重托管的技術挑戰&#xff0c;部分企業級 IoT 設備只能在黑盒環境下進行模糊測試。分享一篇發表于 2024 年 S&P 會議的論文 Labrador&#xff0c;它利用響應來引導請求變異&#xff0c;實現了針對 IoT 設備的高效黑盒模糊測試。 猴先生說&#xff1a;這篇論…

WPF為啟動界面(Splash Screen)添加背景音樂

1. 添加音頻文件到項目 將音頻文件&#xff08;如.mp3/.wav&#xff09;放入項目文件夾&#xff08;如Resources&#xff09;在解決方案資源管理器中右鍵文件 → 屬性&#xff1a; 生成操作&#xff1a;選擇Resource&#xff08;嵌入資源&#xff09;或Content&#xff08;內容…

【Jmeter】報錯:An error occured:Unknown arg

問題 調試Jmeter時&#xff0c;報錯&#xff1a;‘An error occurred: Unknown arg: l’&#xff0c;腳本如下&#xff1a; $JMETER_PATH -n -t "$target_jmx" -l "$SCENARIO_REPORT_DIR/result_${threads}.jtl" -e -o "$SCENARIO_REPORT_DIR/htm…