視頻> 正文

提升職業(yè)技能:了解并掌握這十大NLP技術(shù)

時(shí)間: 2023-06-26 19:22:06 來源: 今日頭條
一、情感分析

情感分析是一種判斷文本背后情緒色彩的過程,例如推特、產(chǎn)品評(píng)論或客戶反饋。


(資料圖)

情感分析的目標(biāo)是將文本分類為正面、負(fù)面或中性。例如,如果客戶寫了一篇產(chǎn)品評(píng)論,說“非常棒,小孩子很喜歡”,情感分析算法會(huì)將文本分類為正面。情感分析廣泛應(yīng)用于電子商務(wù)、社交媒體和客戶服務(wù)等行業(yè),以深入了解客戶的意見和偏好。

執(zhí)行情感分析的一種方式是使用預(yù)訓(xùn)練模型,比如Python的nltk庫(kù)提供的模型。以下是如何使用nltk庫(kù)將一段文本的情感分類為正面、負(fù)面或中性的例子:

import nltk from nltk.sentiment import SentimentIntensityAnalyzer # 初始化情感分析器sia = SentimentIntensityAnalyzer() # 定義要分析的文本text = "非常棒,小孩子很喜歡" # 獲取情感分?jǐn)?shù)sentiment_score = sia.polarity_scores(text) # 打印情感得分print (sentiment_score) # 將情緒分類為正面、負(fù)面或中性ifentiment_score [ "compound" ] > 0.5 :     print ( "Positiveentiment" ) elif情感_score[ "compound"] < - 0.5 :     print ( "Negative sentiment" ) else :     print ( "Neutral sentiment" )

此例子使用了nltk.sentiment模塊中的SentimentIntensityAnalyzer類來分析文本 "我喜歡這個(gè)產(chǎn)品,它太棒了"的情緒。polarity_scores()方法返回一個(gè)包含文本情緒分?jǐn)?shù)的字典,其中"compound"分?jǐn)?shù)是一個(gè)介于-1和1之間的值,-1表示負(fù)面,1表示正面,0表示中性?;赾ompound分?jǐn)?shù),我們可以將情感分類為正面、負(fù)面或中性。

需要注意,這只是一個(gè)簡(jiǎn)單的例子,實(shí)際上,情感分析是一個(gè)需要大量調(diào)整和微調(diào)才能獲得良好結(jié)果的領(lǐng)域。一個(gè)預(yù)訓(xùn)練的模型可能無法很好地處理某些類型的文本(例如,諷刺),可能需要微調(diào)或預(yù)處理步驟來提高其性能。

二、命名實(shí)體識(shí)別 (NER)

命名實(shí)體識(shí)別(NER)是一種用于從非結(jié)構(gòu)化文本中提取實(shí)體,如人名、組織和地點(diǎn)的技術(shù)。執(zhí)行NER的一種方式是使用預(yù)訓(xùn)練模型,比如Python的spacy庫(kù)提供的模型。以下是如何使用spacy庫(kù)從一段文本中提取命名實(shí)體的例子:

import spacy# Load the pre-trained modelnlp = spacy.load("en_core_web_sm")# Define text to be analyzedtext = "Barack Obama visited the White House today"# Process the text with the modeldoc = nlp(text)# Extract named entitiesfor ent in doc.ents:    print(ent.text, ent.label_)

這個(gè)例子使用了spacy的en_core_web_sm模型來分析文本 Barack Obama visited the White House today。處理過的文本的ents屬性返回一個(gè)命名實(shí)體的迭代器,每個(gè)實(shí)體都有text和label_這兩個(gè)屬性,分別代表實(shí)體的文本和標(biāo)簽。在這個(gè)例子中,輸出將會(huì)是:

Barack Obama PERSONWhite House FAC

它顯示“Barack Obama”是一個(gè)人,而“White House”是一個(gè)設(shè)施。

在spacy中,有多個(gè)適用于不同語言的預(yù)訓(xùn)練模型,其中一些比其他模型更準(zhǔn)確。此外,命名實(shí)體識(shí)別是一個(gè)需要大量調(diào)整和微調(diào)才能取得良好結(jié)果的領(lǐng)域。一個(gè)預(yù)訓(xùn)練的模型可能無法很好地處理某些類型的文本(例如,技術(shù)性文本),可能需要額外的微調(diào)或預(yù)處理步驟來提高其性能。

三、文本分類

文本分類是一種將文本自動(dòng)分類到預(yù)定義的類別或類中的過程。例如,文本分類算法可能用于將電子郵件分類為垃圾郵件或非垃圾郵件,或者按主題對(duì)新聞文章進(jìn)行分類。文本分類在各種應(yīng)用中都有使用,包括自然語言處理、信息檢索和機(jī)器學(xué)習(xí)。

以下是使用Python庫(kù)scikit-learn進(jìn)行文本分類的一個(gè)例子。此例子使用了20個(gè)新聞組的數(shù)據(jù)集,其中包含來自20個(gè)不同新聞組的文本。目標(biāo)是訓(xùn)練一個(gè)分類器,根據(jù)內(nèi)容預(yù)測(cè)文本屬于哪個(gè)新聞組。

from sklearn.datasets import fetch_20newsgroupsfrom sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.naive_bayes import MultinomialNBfrom sklearn.metrics import accuracy_score# Load the 20 Newsgroups datasetnewsgroups_train = fetch_20newsgroups(subset="train")newsgroups_test = fetch_20newsgroups(subset="test")# Transform the texts into TF-IDF vectorsvectorizer = TfidfVectorizer()X_train = vectorizer.fit_transform(newsgroups_train.data)X_test = vectorizer.transform(newsgroups_test.data)y_train = newsgroups_train.targety_test = newsgroups_test.target# Train a Multinomial Naive Bayes classifierclf = MultinomialNB()clf.fit(X_train, y_train)# Predict the newsgroup of the test textsy_pred = clf.predict(X_test)# Evaluate the classifier"s accuracyaccuracy = accuracy_score(y_test, y_pred)print("Accuracy: {:.2f}%".format(accuracy * 100))

這段代碼將加載20個(gè)新聞組的數(shù)據(jù)集,并將其劃分為訓(xùn)練集和測(cè)試集。然后,它會(huì)使用TfidfVectorizer將文本轉(zhuǎn)換為數(shù)值表示,并使用訓(xùn)練集訓(xùn)練一個(gè)多項(xiàng)式樸素貝葉斯分類器。最后,它會(huì)使用訓(xùn)練好的分類器預(yù)測(cè)測(cè)試文本的新聞組,并評(píng)估分類器的準(zhǔn)確性。

四、機(jī)器翻譯

機(jī)器翻譯是自動(dòng)將文本從一種語言翻譯成另一種語言的過程。例如,機(jī)器翻譯算法可能將一篇西班牙語的新聞文章翻譯成英語。機(jī)器翻譯在各種行業(yè)中都有使用,包括電子商務(wù)、國(guó)際商務(wù)和政府。

以下是一個(gè)使用OpenNMT庫(kù)將英文翻譯成法文的例子:

from opennmt import tokenizersfrom opennmt import modelsimport torch# Tokenize the source and target text.source_tokenizer = tokenizers.new("text", "en")source_text = "Hello, how are you?"source_tokens = source_tokenizer.tokenize(source_text)target_tokenizer = tokenizers.new("text", "fr")target_text = "Bonjour, comment vas-tu?"target_tokens = target_tokenizer.tokenize(target_text)# Build the translation model.model = models.Transformer(    source_vocab_size=len(source_tokenizer.vocab),    target_vocab_size=len(target_tokenizer.vocab),    num_layers=6,    hidden_size=512,    dropout=0.1,    attention_dropout=0.1,    relu_dropout=0.1)model.eval()# Convert the tokens to a tensor.source_tokens = torch.tensor(source_tokenizer.encode(source_text)).unsqueeze(0)# Generate a translation.with torch.no_grad():    log_probs, _, _ = model(source_tokens, None, None)    tokens = log_probs.argmax(-1)# Decode the translation.translation = target_tokenizer.decode(tokens[0])print(translation)

這段代碼將輸出:“Bonjour, comment vas-tu?”(中文:你好,你好嗎?)

請(qǐng)注意,這是一個(gè)非常簡(jiǎn)單的例子,并不能直接運(yùn)行,因?yàn)樗枰虞d一個(gè)預(yù)訓(xùn)練的模型。此外,此例子使用的是小數(shù)據(jù)集作為輸入,而針對(duì)特定情況可能并沒有可用的預(yù)訓(xùn)練模型。如果想要了解更多關(guān)于機(jī)器學(xué)習(xí)的信息,請(qǐng)點(diǎn)擊這里。

五、文本摘要

文本摘要是自動(dòng)生成較長(zhǎng)文本縮減版的過程。例如,文本摘要算法可能會(huì)針對(duì)一篇長(zhǎng)篇新聞文章,生成一個(gè)簡(jiǎn)短的、概括主要要點(diǎn)的摘要。文本摘要在各種應(yīng)用中都有使用,包括自然語言處理、信息檢索和機(jī)器學(xué)習(xí)。

請(qǐng)注意,這是一個(gè)非常簡(jiǎn)單的例子,并不能直接運(yùn)行,因?yàn)樗枰虞d一個(gè)預(yù)訓(xùn)練的模型。此外,此例子使用的是小數(shù)據(jù)集作為輸入,而針對(duì)特定情況可能并沒有可用的預(yù)訓(xùn)練模型。

from gensim.summarization import summarizetext = "In computing, stop words are words which are filtered out before or after processing of text. Though stop words usually refer to the most common words in a language, there is no single universal list of stop words used by all natural language processing tools, and indeed not all tools even use such a list. Some tools specifically avoid removing these stop words to support phrase search."print(summarize(text, ratio=0.2))

這段代碼將輸出文本的摘要版,僅保留最重要的20%的句子:“Some tools specifically avoid removing these stop words to support phrase search.”(中文:有些工具特別避免刪除這些停用詞,以支持短語搜索。)

您可以調(diào)整比例參數(shù)來改變摘要的文本量,或者使用word_count參數(shù)來指定摘要中包含的詞數(shù)。

六、信息提取

信息提取是從非結(jié)構(gòu)化文本中提取結(jié)構(gòu)化數(shù)據(jù)的過程。例如,信息提取算法可能會(huì)從電商網(wǎng)站中提取產(chǎn)品信息,如價(jià)格和庫(kù)存情況。信息提取在各種行業(yè)中都有使用,包括電子商務(wù)、金融和醫(yī)療保健,以從非結(jié)構(gòu)化文本中提取結(jié)構(gòu)化數(shù)據(jù)。

以下是一個(gè)使用Python和Natural Language Toolkit(NLTK)庫(kù)進(jìn)行信息提取的例子:

import nltk from nltk import word_tokenize, pos_tag, ne_chunk # 示例文本text = "Barack Obama 是美國(guó)第 44 任總統(tǒng),任期從 2009 年到 2017 年。" # 對(duì)文本進(jìn)行分詞tokens = word_tokenize(text) # POS 標(biāo)記tagged_tokens = pos_tag(tokens) # 命名實(shí)體識(shí)別Entity = ne_chunk(tagged_tokens) print(entities)

上述代碼首先將文本分詞成單個(gè)詞匯,然后進(jìn)行詞性標(biāo)注,識(shí)別每個(gè)詞的詞性,最后進(jìn)行命名實(shí)體識(shí)別,識(shí)別出人名、組織名和地名等實(shí)體。

ne_chunk函數(shù)的輸出是一個(gè)可以進(jìn)一步處理以提取感興趣實(shí)體的樹狀結(jié)構(gòu)。

(S  (PERSON Barack/NNP)  Obama/NNP  was/VBD  the/DT  44th/JJ  (ORGANIZATION President/NNP)  of/IN  the/DT  (GPE United/NNP States/NNPS)  ,/,  serving/VBG  from/IN  2009/CD  to/TO  2017/CD  ./.)

請(qǐng)注意,上述例子非常簡(jiǎn)單,在現(xiàn)實(shí)中的應(yīng)用中,您需要做大量的預(yù)處理和模型微調(diào)。

七、文本生成

文本生成是自動(dòng)生成文本的過程,比如編寫產(chǎn)品描述或編寫新聞文章。例如,文本生成算法可能會(huì)將產(chǎn)品圖像作為輸入,然后生成產(chǎn)品描述。文本生成在各種行業(yè)中都有使用,包括電子商務(wù)、市場(chǎng)營(yíng)銷和內(nèi)容創(chuàng)作。

以下是一個(gè)使用Python庫(kù)Hugging Face的transformers中的GPT-2模型進(jìn)行文本生成的例子:

from transformers import GPT2Tokenizer, GPT2LMHeadModel# Load the GPT-2 model and tokenizertokenizer = GPT2Tokenizer.from_pretrained("gpt2")model = GPT2LMHeadModel.from_pretrained("gpt2")# Define the prompt and generate textprompt = "Once upon a time in a land far, far away"generated_text = model.generate(input_ids=tokenizer.encode(prompt))# Decode the generated textgenerated_text = tokenizer.decode(generated_text)print(generated_text)

這段代碼將使用GPT-2模型根據(jù)提供的提示“Once upon a time in a land far, far away”(譯文:很久很久以前,在一個(gè)遙遠(yuǎn)的地方)生成文本。生成的文本將在控制臺(tái)上打印出來。

請(qǐng)注意,您可能需要互聯(lián)網(wǎng)連接來下載預(yù)訓(xùn)練模型,同時(shí)也需要強(qiáng)大的GPU來生成文本。

八、文本聚類

文本聚類是將相似的文本文檔分組的過程。例如,文本聚類算法可能會(huì)對(duì)新聞文章集合進(jìn)行處理,并將其分為“體育”、“政治”和“娛樂”等類別。文本聚類在各種應(yīng)用中都有使用,包括自然語言處理、信息檢索和機(jī)器學(xué)習(xí)。

import nltkfrom nltk import word_tokenize, pos_tag, ne_chunk# Sample texttext = "Barack Obama was the 44th President of the United States, serving from 2009 to 2017."# Tokenize the texttokens = word_tokenize(text)# POS taggingtagged_tokens = pos_tag(tokens)# Named entity recognitionentities = ne_chunk(tagged_tokens)print(entities)

上述代碼首先將文本分詞成單個(gè)詞匯,然后進(jìn)行詞性標(biāo)注,識(shí)別每個(gè)詞的詞性,最后進(jìn)行命名實(shí)體識(shí)別,識(shí)別出人名、組織名和地名等實(shí)體。

ne_chunk函數(shù)的輸出是一個(gè)可以進(jìn)一步處理以提取感興趣實(shí)體的樹狀結(jié)構(gòu)。

九、語音識(shí)別

語音識(shí)別是將口語轉(zhuǎn)化為書面文字的過程。例如,語音識(shí)別算法可能會(huì)在語音控制系統(tǒng)中使用,如虛擬助手,將口頭指令轉(zhuǎn)錄為計(jì)算機(jī)可以理解的文字。語音識(shí)別在各種行業(yè)中都有使用,包括醫(yī)療保健、金融和客戶服務(wù)。

有許多庫(kù)和框架可以用于各種編程語言的語音識(shí)別。以下是如何使用Python中的Speech Recognition庫(kù)從麥克風(fēng)轉(zhuǎn)錄語音的例子:

import speech_recognition as sr# create a recognizer objectr = sr.Recognizer()# create a microphone objectmic = sr.Microphone()# listen for speech and transcribe itwith mic as source:    r.adjust_for_ambient_noise(source)    audio = r.listen(source)    transcribed_text = r.recognize_google(audio)    print(transcribed_text)

這個(gè)例子使用了recognize_google()函數(shù),該函數(shù)利用Google Web語音API進(jìn)行語音轉(zhuǎn)錄。其他的轉(zhuǎn)錄選項(xiàng)包括使用recognize_sphinx()函數(shù)(它使用CMU Sphinx引擎)或recognize_wit()函數(shù)(它使用Wit.ai API)。

你也可以使用這個(gè)庫(kù)來識(shí)別文件中的語音:

with sr.AudioFile("audio_file.wav") as source:    audio = r.record(source)    transcribed_text = r.recognize_google(audio)    print(transcribed_text)

請(qǐng)注意,使用Google Web語音API需要網(wǎng)絡(luò)連接,而且你可能需要設(shè)置憑證并根據(jù)你選擇的轉(zhuǎn)錄引擎安裝一些額外的包。

十、文本轉(zhuǎn)語音 (TTS)

文本到語音(TTS)是一種將書面文本轉(zhuǎn)化為口語的技術(shù)。它常用于為視覺障礙者進(jìn)行語音合成、語音助手以及自動(dòng)客戶服務(wù)系統(tǒng)等應(yīng)用。

TTS系統(tǒng)使用多種技術(shù)的組合,如自然語言處理和機(jī)器學(xué)習(xí),來產(chǎn)生逼真的語音。一些TTS軟件的例子包括Google的文本到語音、Amazon Polly以及Apple的Siri。

以下是一個(gè)使用Python中的gTTS(Google文本到語音)庫(kù)來將文本轉(zhuǎn)化為語音的例子:

from gtts import gTTSimport ostext = "Hello, this is an example of text to speech using the gTTS library in Python."# Language in which you want to convertlanguage = "en"# Passing the text and language to the engine, # here we have marked slow=False. Which tells # the module that the converted audio should # have a high speedmyobj = gTTS(text=text, lang=language, slow=False)# Saving the converted audio in a mp3 file named# welcome myobj.save("welcome.mp3")# Playing the converted fileos.system("mpg321 welcome.mp3")

這段代碼使用gTTS庫(kù)將文本“Hello, this is an example of text to speech using the gTTS library in Python.”(譯文:“你好,這是一個(gè)使用Python中的gTTS庫(kù)將文本轉(zhuǎn)化為語音的例子?!保┺D(zhuǎn)化為語音,并將其保存到一個(gè)名為“welcome.mp3”的mp3文件中。

最后一行os.system(“mpg321 welcome.mp3”)使用命令行工具mpg321播放mp3文件。如果你的系統(tǒng)中沒有安裝mpg321,你可以使用其他播放器來播放mp3文件。

關(guān)于高級(jí)自然語言處理的進(jìn)一步學(xué)習(xí),可以參考這個(gè)鏈接:microstone123/Natural-Language-processing (github.com)。

關(guān)鍵詞:

責(zé)任編輯:QL0009

為你推薦

關(guān)于我們| 聯(lián)系我們| 投稿合作| 法律聲明| 廣告投放

版權(quán)所有 © 2020 跑酷財(cái)經(jīng)網(wǎng)

所載文章、數(shù)據(jù)僅供參考,使用前務(wù)請(qǐng)仔細(xì)閱讀網(wǎng)站聲明。本站不作任何非法律允許范圍內(nèi)服務(wù)!

聯(lián)系我們:315 541 185@qq.com