最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)NLP的完整流程介紹

 更新時(shí)間:2025年01月16日 16:01:57   作者:王子良.  
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)NLP的完整流程,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1. 安裝和導(dǎo)入必要的庫(kù)

首先,確保已安裝必要的 NLP 庫(kù):

pip install numpy pandas matplotlib scikit-learn nltk spacy

然后導(dǎo)入必要的 Python 庫(kù):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, confusion_matrix
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
import spacy

2. 文本數(shù)據(jù)準(zhǔn)備

在實(shí)際應(yīng)用中,你可能需要從文件、數(shù)據(jù)庫(kù)或網(wǎng)頁(yè)中獲取文本數(shù)據(jù)。這里我們以一個(gè)簡(jiǎn)單的文本數(shù)據(jù)集為例:

# 示例文本數(shù)據(jù)
data = {
    'text': [
        "I love programming in Python.",
        "Python is a great language for machine learning.",
        "Natural language processing is fun!",
        "I enjoy solving problems using code.",
        "Deep learning and NLP are interesting fields.",
        "Machine learning and AI are revolutionizing industries."
    ],
    'label': [1, 1, 1, 0, 1, 0]  # 1表示正面情感,0表示負(fù)面情感
}
 
df = pd.DataFrame(data)
print(df)

3. 文本預(yù)處理

文本預(yù)處理是 NLP 的關(guān)鍵步驟,通常包括:分詞、去除停用詞、詞干提取和小寫(xiě)化。

3.1 小寫(xiě)化

將文本中的所有字母轉(zhuǎn)換為小寫(xiě),確保詞匯的一致性。

# 小寫(xiě)化
df['text'] = df['text'].apply(lambda x: x.lower())

3.2 分詞(Tokenization)

分詞是將一段文本分割成一個(gè)個(gè)單獨(dú)的詞。

nltk.download('punkt')  # 下載 punkt 分詞器
 
# 分詞
df['tokens'] = df['text'].apply(word_tokenize)
print(df['tokens'])

3.3 去除停用詞

停用詞是一些常見(jiàn)但不攜帶實(shí)際信息的詞,如 "the", "is", "and" 等。我們需要去除這些詞。

nltk.download('stopwords')  # 下載停用詞庫(kù)
 
stop_words = set(stopwords.words('english'))
 
# 去除停用詞
df['tokens'] = df['tokens'].apply(lambda x: [word for word in x if word not in stop_words])
print(df['tokens'])

3.4 詞干提取(Stemming)

詞干提取是將詞語(yǔ)還原為其基本形式(詞干)。例如,將“running”還原為“run”。

from nltk.stem import PorterStemmer
 
stemmer = PorterStemmer()
 
# 詞干提取
df['tokens'] = df['tokens'].apply(lambda x: [stemmer.stem(word) for word in x])
print(df['tokens'])

4. 特征提取

文本數(shù)據(jù)無(wú)法直接用于機(jī)器學(xué)習(xí)模型,因此需要將其轉(zhuǎn)換為數(shù)字特征。常見(jiàn)的特征提取方法是 TF-IDF(Term Frequency-Inverse Document Frequency)。

# 使用 TF-IDF 向量化文本
vectorizer = TfidfVectorizer()
 
# 將文本數(shù)據(jù)轉(zhuǎn)換為 TF-IDF 特征矩陣
X = vectorizer.fit_transform(df['text'])
 
# 查看轉(zhuǎn)換后的 TF-IDF 特征矩陣
print(X.toarray())

5. 訓(xùn)練測(cè)試數(shù)據(jù)集劃分

將數(shù)據(jù)集分成訓(xùn)練集和測(cè)試集,通常是 80% 訓(xùn)練集和 20% 測(cè)試集。

# 劃分訓(xùn)練集和測(cè)試集
X_train, X_test, y_train, y_test = train_test_split(X, df['label'], test_size=0.2, random_state=42)
 
print(f"訓(xùn)練集大小: {X_train.shape}")
print(f"測(cè)試集大小: {X_test.shape}")

6. 訓(xùn)練模型

我們使用 樸素貝葉斯(Naive Bayes) 模型來(lái)訓(xùn)練數(shù)據(jù)。樸素貝葉斯是一種常用的分類(lèi)算法,適用于文本分類(lèi)任務(wù)。

# 創(chuàng)建并訓(xùn)練模型
model = MultinomialNB()
model.fit(X_train, y_train)

7. 評(píng)估模型

訓(xùn)練好模型后,我們需要用測(cè)試集來(lái)評(píng)估模型的性能。主要評(píng)估指標(biāo)包括準(zhǔn)確率和混淆矩陣。

# 使用測(cè)試集進(jìn)行預(yù)測(cè)
y_pred = model.predict(X_test)
 
# 計(jì)算準(zhǔn)確率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型準(zhǔn)確率: {accuracy:.4f}")
 
# 顯示混淆矩陣
conf_matrix = confusion_matrix(y_test, y_pred)
print("混淆矩陣:")
print(conf_matrix)
 
# 可視化混淆矩陣
plt.matshow(conf_matrix, cmap='Blues')
plt.title("Confusion Matrix")
plt.xlabel('Predicted')
plt.ylabel('True')
plt.colorbar()
plt.show()

8. 模型預(yù)測(cè)

使用訓(xùn)練好的模型對(duì)新的文本數(shù)據(jù)進(jìn)行預(yù)測(cè)。

# 新文本數(shù)據(jù)
new_text = ["I love learning about AI and machine learning."]
 
# 文本預(yù)處理
new_text = [text.lower() for text in new_text]
new_tokens = [word_tokenize(text) for text in new_text]
new_tokens = [[stemmer.stem(word) for word in tokens if word not in stop_words] for tokens in new_tokens]
new_text_clean = [' '.join(tokens) for tokens in new_tokens]
 
# 特征提取
new_features = vectorizer.transform(new_text_clean)
 
# 預(yù)測(cè)
prediction = model.predict(new_features)
print(f"預(yù)測(cè)標(biāo)簽: {prediction[0]}")

9. 總結(jié)

在這篇文章中,我們展示了一個(gè)完整的 NLP 流程,包括:

文本預(yù)處理:小寫(xiě)化、分詞、去除停用詞、詞干提取。

特征提取:使用 TF-IDF 將文本轉(zhuǎn)換為特征矩陣。

模型訓(xùn)練:使用樸素貝葉斯分類(lèi)器進(jìn)行文本分類(lèi)。

模型評(píng)估:使用準(zhǔn)確率和混淆矩陣來(lái)評(píng)估模型表現(xiàn)。

模型預(yù)測(cè):對(duì)新文本進(jìn)行預(yù)測(cè)。

這是一個(gè)典型的 NLP 流程,可以根據(jù)實(shí)際需求進(jìn)行擴(kuò)展,加入更多的特征、算法和調(diào)優(yōu)步驟。

到此這篇關(guān)于Python實(shí)現(xiàn)NLP的完整流程介紹的文章就介紹到這了,更多相關(guān)Python NLP內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用if語(yǔ)句實(shí)現(xiàn)一個(gè)猜拳游戲詳解

    python使用if語(yǔ)句實(shí)現(xiàn)一個(gè)猜拳游戲詳解

    這篇文章主要介紹了python使用if語(yǔ)句實(shí)現(xiàn)一個(gè)猜拳游戲詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • django如何通過(guò)類(lèi)視圖使用裝飾器

    django如何通過(guò)類(lèi)視圖使用裝飾器

    這篇文章主要介紹了django如何設(shè)計(jì)裝飾器過(guò)濾黑名單,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python編程在flask中模擬進(jìn)行Restful的CRUD操作

    Python編程在flask中模擬進(jìn)行Restful的CRUD操作

    今天小編就為大家分享一篇關(guān)于Python編程在flask中模擬進(jìn)行Restful的CRUD操作,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Python實(shí)現(xiàn)wav和pcm的轉(zhuǎn)換方式

    Python實(shí)現(xiàn)wav和pcm的轉(zhuǎn)換方式

    這篇文章主要介紹了Python實(shí)現(xiàn)wav和pcm的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python?pygame英雄循環(huán)飛行及作業(yè)示例

    python?pygame英雄循環(huán)飛行及作業(yè)示例

    這篇文章主要為大家介紹了python?pygame英雄循環(huán)飛行及作業(yè)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Python中的命令行參數(shù)解析工具之docopt詳解

    Python中的命令行參數(shù)解析工具之docopt詳解

    docopt 是一個(gè)用來(lái)解析命令行參數(shù)的工具,當(dāng)想要在 Python 程序后面附加參數(shù)時(shí),就不需要再為此而發(fā)愁了。下面這篇文章主要介紹了Python中命令行參數(shù)解析工具之docopt的相關(guān)資料,介紹的非常詳細(xì),需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • pytorch 常用線(xiàn)性函數(shù)詳解

    pytorch 常用線(xiàn)性函數(shù)詳解

    今天小編就為大家分享一篇pytorch 常用線(xiàn)性函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • pyspark給dataframe增加新的一列的實(shí)現(xiàn)示例

    pyspark給dataframe增加新的一列的實(shí)現(xiàn)示例

    這篇文章主要介紹了pyspark給dataframe增加新的一列的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 最新評(píng)論

    绍兴市| 文水县| 星座| 崇阳县| 泸水县| 康定县| 梁山县| 门头沟区| 尼勒克县| 凤城市| 建宁县| 合川市| 红桥区| 沁水县| 微山县| 龙川县| 抚顺市| 福清市| 陆河县| 南投市| 凌源市| 普兰店市| 东港市| 资中县| 抚宁县| 大理市| 若羌县| 潼南县| 阿城市| 图木舒克市| 高清| 临潭县| 水富县| 闸北区| 仁寿县| 泰州市| 彭阳县| 新昌县| 顺义区| 盐津县| 苏尼特左旗|