NLTK和jieba

NLTK與jieba概述

自然語言處理(NLP)領域是計算機科學領域與人工智能領域中的一個重要方向,主要研究方向是實現人與計算機之間用自然語言進行有效通信的各種理論和方法。

在自然語言處理領域中,文本類型的數據占據著很大的市場,由于其自身具有半結構的特點,且自然語言的分類繁多,所以針對不同的語言Python分別提供了相應的庫來處理,最常見的是處理英文的NLTK庫,它自帶的語料庫都是英文的,由于中文要比英文的結構復雜得多,不適合用NLTK進行處理,所以提供了jieba庫來更好地處理中文。

NLTK全稱為Natural Language Toolkit,它是一套基于Python的自然語言處理工具包,可以方便地完成自然語言處理的任務,包括分詞、詞性標注、命名實體識別(NER)及句法分析等。

NLTK是一個免費的、開源的、社區驅動的項目,它為超過50個語料庫和詞匯資源(如WordNet)提供了易于使用的接口,以及一套用于分類、標記化、詞干化、解析和語義推理的文本處理庫。接下來,通過一張表來列舉NLTK中用于語言處理任務的一些常用模塊,具體如表1所示。

表1 NLTK中的常用模塊

語言處理任務nltk模塊功能描述
獲取和處理語料庫nltk.corpus語料庫和詞典的標準化接口
字符串處理nltk.tokenize,nltk.stem分詞,句子分解提取主干
搭配發現nltk.collocations用于識別搭配工具,查找單詞之間的關聯關系
詞性標識符nltk.tag包含用于詞性標注的類和接口
分類nltk.classify,nltk.clusternltk.classify用類別標簽標記的接口;nltk.cluster包含了許多聚類算法如貝葉斯、EM、k-means
分塊nltk.chunk在不受限制的文本識別非重疊語言組的類和接口
解析nltk.parse對圖表、概率等解析的接口
語義解釋nltk.sem,nltk.inference一階邏輯,模型檢驗
指標評測nltk.metrics精度,召回率,協議系數
概率與估計nltk.probability計算頻率分布、平滑概率分布的接口
應用nltk.app,nltk.chat圖形化的關鍵詞排序,分析器,WordNet查看器,聊天機器人
語言學領域的工作nltk.toolbox處理SIL工具箱格式的數據

GitHub上有一段描述Jieba的句子:

"Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best Python Chinese word segmentation module.

翻譯:“Jieba”中文分詞:最好的 Python 中文分詞組件。

由此可見,jieba最適合做中文分詞,這離不開它擁有的一些特點:

(1) 支持三種分詞模式:

  • 精確模式:試圖將句子最精確地切開,適合文本分析。

  • 全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義。

  • 搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。

(2) 支持繁體分詞。

(3) 支持自定義詞典。

(4) MIT 授權協議。

jieba庫中主要的功能包括分詞、添加自定義詞典、關鍵詞提取、詞性標注、并行分詞等等。

安裝NLTK和下載語料庫

要想使用NLTK庫處理自然語言,前提是需要先安裝。這里,我們既可以在終端使用pip命令直接安裝,也可以在Jupyter Notebook中直接使用。以前者為例,打開終端鍵入如下命令安裝NLTK庫:

>>> pip install -U nltk

安裝完以后,在終端中啟動Python,然后鍵入如下命令測試是否安裝成功:

>>> import nltk

按下回車鍵,如果程序中沒有提示任何錯誤的信息,則表示成功安裝,否則表示安裝失敗。值得一提的是,Anaconda中默認已經安裝了NLTK庫(但是沒有安裝語料庫),可以用import導入使用,無需再另行安裝。

NLTK庫中附帶了許多語料庫(指經科學取樣和加工的大規模電子文本庫)、玩具語法、訓練模型等,完整的信息發布在http://nltk.org/nltk_data/網上。如果希望在計算機上安裝單獨的數據包,或者是下載全部的數據包,則需要在Jupyter Notebook(或者管理員賬戶)中執行以下操作:

In [1]: import nltknltk.download()  # 打開NLTK下載器
Out[1]: True

此時,打開了一個NLTK Downloader窗口,如圖1所示。

img

圖1 打開NLTK Downloader窗口

圖1的窗口中包含以下選項:

(1) Collections:集合。

(2) Corpora:語料庫。

(3) Models:模型。

(4) All Packages:所有包。

如果希望集中安裝所有的選項,則需要單擊【File】->【Change Download Directory】選擇更新下載目錄,這時圖1中 “Download Directory”對應的文本框處于可編輯狀態,將其設置為C:\nltk_data(Windows),然后單擊【File】->【Download】開始下載,直至所有選項安裝完成,這個過程需要等待的時間稍微有點長。

注意:

如果沒有將數據包安裝到上述位置,則需要設置NLTK_DATA環境變量以指定數據的位置。

如果只是想單獨安裝某個庫或模型等,比如brown語料庫,則可以單擊圖1中的【Corpora】選項,從列表中選中“brown”,然后單擊左下方的【Download】按鈕進行下載。

下載完以后,可以測試語料庫是否下載成功,可以按照如下方式進行檢測(假設下載了布朗語料庫):

In [2]: from nltk.corpus import brown    # 導入brown語料庫brown.words()             # 查看brown庫中所有的單詞
Out[2]: ['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', ...]

上述示例中輸出了brown語料庫中所有的單詞,表明下載成功。

還可以通過categories()函數查看brown中包含的類別,示例代碼如下。

In [3]: brown.categories()
Out[3]: ['adventure', 'belles_lettres', 'editorial', 'fiction',
?      'government', 'hobbies', 'humor', 'learned', 'lore','mystery', 'news', 'religion', 'reviews',
?      'romance', 'science_fiction']

此外,還可以查看brown語料庫中包含的單詞或句子的總個數,示例代碼如下。

In [4]: 'brown中一共有{}個句子'.format(len(brown.sents()))
Out[4]: 'brown中一共有57340個句子'
In [5]: 'brown中一共有{}個單詞'.format(len(brown.words()))
Out[5]: 'brown中一共有1161192個單詞'

jieba庫的安裝

如果希望對中文進行分詞操作,則需要借助jieba分詞工具。安裝jieba庫的方式比較簡單,可以直接使用如下pip命令進行安裝:

pip install jieba

安裝完成出現如圖1所示的提示信息。

img

圖1 提示jieba安裝完成

為了驗證jieba庫是否成功安裝,我們可以在Jupyter Notebook中通過 import jieba 來引用,如果沒有提示錯誤信息,則表示安裝成功。

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

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

相關文章

linux查看定時任務與設置定時任務

一、查看定時任務 使用 cron 查看當前用戶的定時任務: bash crontab -l # 查看當前用戶的cron任務 查看系統級定時任務: bash 系統級任務通常存放在以下位置: cat /etc/crontab # 系統主配置文件 ls /etc/cron.d/ # 系統級任務片段 ls /…

DeepSeek-R1本地化部署(Mac)

一、下載 Ollama 本地化部署需要用到 Ollama,它能支持很多大模型。官方網站:https://ollama.com/ 點擊 Download 即可,支持macOS,Linux 和 Windows;我下載的是 mac 版本,要求macOS 11 Big Sur or later,Ol…

支持向量簡要理解

決策方程符合感知機區分理論,我們基于線性代數來看這滿足子空間理論,可以獲取得到超平面。 支持向量機的目標是尋找最與超平面最近的點的最大距離,而距離計算如上,符合數學上計算點到線(面)的距離公式。 …

使用OpenCV和MediaPipe庫——實現人體姿態檢測

目錄 準備工作如何在Windows系統中安裝OpenCV和MediaPipe庫? 安裝Python 安裝OpenCV 安裝MediaPipe 驗證安裝 代碼邏輯 整體代碼 效果展示 準備工作如何在Windows系統中安裝OpenCV和MediaPipe庫? 安裝Python 可以通過命令行運行python --versio…

5G學習筆記之BWP

我們只會經歷一種人生,我們選擇的人生。 參考:《5G NR標準》、《5G無線系統指南:如微見著,賦能數字化時代》 目錄 1. 概述2. BWP頻域位置3. 初始與專用BWP4. 默認BWP5. 切換BWP 1. 概述 在LTE的設計中,默認所有終端均能處理最大2…

創建Electron35 + vue3 + electron-builder項目,有很過坑,記錄過程

環境: node v20.18.0 npm 11.1.0 用到的所有依賴: "dependencies": {"core-js": "^3.8.3","vue": "^3.2.13","vue-router": "^4.5.0"},"devDependencies": {"ba…

Linux下安裝elasticsearch(Elasticsearch 7.17.23)

Elasticsearch 是一個分布式的搜索和分析引擎,能夠以近乎實時的速度存儲、搜索和分析大量數據。它被廣泛應用于日志分析、全文搜索、應用程序監控等場景。 本文將帶你一步步在 Linux 系統上安裝 Elasticsearch 7.17.23 版本,并完成基本的配置&#xff0…

NVIDIA顯卡驅動、CUDA、cuDNN 和 TensorRT 版本匹配指南

一、驅動安裝 1、下載驅動 前往NVIDIA驅動下載頁,輸入顯卡型號和操作系統類型,選擇≥目標CUDA版本要求的驅動版本?。 2、安裝驅動? ?Windows?:雙擊安裝包按向導操作。?Linux?:建議使用apt或官方.run文件安裝?。 3、驗證…

plt和cv2有不同的圖像表示方式和顏色通道順序

在處理圖像時,matplotlib.pyplot (簡稱 plt) 和 OpenCV (簡稱 cv2) 有不同的圖像表示方式和顏色通道順序。了解這些區別對于正確處理和顯示圖像非常重要。 1. 圖像形狀和顏色通道順序 matplotlib.pyplot (plt) 形狀:plt 通常使用 (height, width, cha…

基于PyTorch的深度學習5——神經網絡工具箱

可以學習如下內容: ? 介紹神經網絡核心組件。 ? 如何構建一個神經網絡。 ? 詳細介紹如何構建一個神經網絡。 ? 如何使用nn模塊中Module及functional。 ? 如何選擇優化器。 ? 動態修改學習率參數。 5.1 核心組件 神經網絡核心組件不多,把這些…

模擬調制技術詳解

內容摘要 本文系統講解模擬調制技術原理及Matlab實現,涵蓋幅度調制的四種主要類型:雙邊帶抑制載波調幅(DSB-SC)、含離散大載波調幅(AM)、單邊帶調幅(SSB)和殘留邊帶調幅(…

aws(學習筆記第三十一課) aws cdk深入學習(batch-arm64-instance-type)

aws(學習筆記第三十一課) aws cdk深入學習 學習內容: 深入練習aws cdk下部署batch-arm64-instance-type 1. 深入練習aws cdk下部署batch-arm64-instance-type 代碼鏈接 代碼鏈接 代碼鏈接 -> batch-arm64-instance-type之前代碼學習 之前學習代碼鏈接 -> aw…

讀書報告」網絡安全防御實戰--藍軍武器庫

一眨眼,20天過去了,刷完了這本書「網絡安全防御實戰--藍軍武器庫」,回味無窮,整理概覽如下,可共同交流讀書心得。在閱讀本書的過程中,我深刻感受到網絡安全防御是一個綜合性、復雜性極高的領域。藍軍需要掌…

生成任務,大模型

一個生成項目 輸入:文字描述(但是給的數據集是一串數字,id,ct描述,醫生描述) 輸出:診斷報告 一、數據處理 import pandas as pd #處理表格數據pre_train_file "data/train.csv"tr…

Spring Boot API 項目中 HAProxy 與 Nginx 的選擇與實踐

在開發 Spring Boot 構建的 RESTful API 項目時,負載均衡和反向代理是提升性能與可用性的關鍵環節。HAProxy 和 Nginx 作為兩種流行的工具,經常被用于流量分發,但它們各有側重。究竟哪一個更適合你的 Spring Boot API 項目?本文將…

Java常用集合與映射的線程安全問題深度解析

Java常用集合與映射的線程安全問題深度解析 一、線程安全基礎認知 在并發編程環境下,當多個線程同時操作同一集合對象時,若未采取同步措施,可能導致以下典型問題: 數據競爭:多個線程同時修改數據導致結果不可預測狀…

DeepLabv3+改進6:在主干網絡中添加SegNext_Attention|助力漲點

??【DeepLabv3+改進專欄!探索語義分割新高度】 ?? 你是否在為圖像分割的精度與效率發愁? ?? 本專欄重磅推出: ? 獨家改進策略:融合注意力機制、輕量化設計與多尺度優化 ? 即插即用模塊:ASPP+升級、解碼器 PS:訂閱專欄提供完整代碼 目錄 論文簡介 步驟一 步驟二…

使用 Elastic-Agent 或 Beats 將 Journald 中的 syslog 和 auth 日志導入 Elastic Stack

作者:來自 Elastic TiagoQueiroz 我們在 Elastic 一直努力將更多 Linux 發行版添加到我們的支持矩陣中,現在 Elastic-Agent 和 Beats 已正式支持 Debian 12! 本文演示了我們正在開發的功能,以支持使用 Journald 存儲系統和身份驗…

3.9[A]csd

在傳統CPU中心架構中,中央處理器通過內存訪問外部存儲器,而數據必須經過網絡接口卡才能到達外部存儲器。這種架構存在集中式計算、DRAM帶寬和容量挑戰、大量數據移動(服務器內和網絡)以及固定計算導致工作負載容量增長等問題。 而…

ESP32S3讀取數字麥克風INMP441的音頻數據

ESP32S3 與 INMP441 麥克風模塊的集成通常涉及使用 I2S 接口進行數字音頻數據的傳輸。INMP441 是一款高性能的數字麥克風,它通過 I2S 接口輸出音頻數據。在 Arduino 環境中,ESP32S3 的開發通常使用 ESP-IDF(Espressif IoT Development Framew…