<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【NLP】幾個(gè)NLP實(shí)用工具:不用重新造輪子

          共 11264字,需瀏覽 23分鐘

           ·

          2020-09-07 13:44

          作者 | Abhijit Gupta?

          編譯 | VK?

          來(lái)源 | Towards Data Science

          介紹

          自然語(yǔ)言處理(NLP)是一個(gè)令人生畏的領(lǐng)域名稱(chēng)。從非結(jié)構(gòu)化文本中生成有用的結(jié)論是很困難的,而且有無(wú)數(shù)的技術(shù)和算法,每一種都有自己的用例和復(fù)雜性。作為一個(gè)接觸NLP最少的開(kāi)發(fā)人員,很難知道要使用哪些方法以及如何實(shí)現(xiàn)它們。

          如果我以最小的努力提供盡量完美的結(jié)果。使用80/20原則,我將向你展示如何在不顯著犧牲結(jié)果(80%)的情況下快速(20%)交付解決方案。

          ?

          “80/20原則認(rèn)為,少數(shù)的原因、投入或努力通常導(dǎo)致大多數(shù)結(jié)果、產(chǎn)出或回報(bào)”

          -理查德·科赫,80/20原則的作者

          ?

          我們將如何實(shí)現(xiàn)這一目標(biāo)?有一些很棒的Python庫(kù)!我們可能站在巨人的肩膀上,迅速創(chuàng)新,而不是重新發(fā)明輪子。通過(guò)預(yù)先測(cè)試的實(shí)現(xiàn)和預(yù)訓(xùn)練的模型,我們將專(zhuān)注于應(yīng)用這些方法并創(chuàng)造價(jià)值。

          本文的目標(biāo)讀者是希望將自然語(yǔ)言處理快速集成到他們的項(xiàng)目中的開(kāi)發(fā)人員。在強(qiáng)調(diào)易用性和快速效果的同時(shí),性能也會(huì)下降。根據(jù)我的經(jīng)驗(yàn),80%的技術(shù)對(duì)于項(xiàng)目來(lái)說(shuō)是足夠的,但是也可以從其他地方尋找相關(guān)方法

          不用多說(shuō)了,我們開(kāi)始吧!


          什么是NLP?

          自然語(yǔ)言處理是語(yǔ)言學(xué)、計(jì)算機(jī)科學(xué)和人工智能的一個(gè)分支領(lǐng)域,允許通過(guò)軟件自動(dòng)處理文本。NLP使機(jī)器能夠閱讀、理解和響應(yīng)雜亂無(wú)章的非結(jié)構(gòu)化文本。

          人們通常將NLP視為機(jī)器學(xué)習(xí)的一個(gè)子集,但實(shí)際情況更為微妙。

          有些NLP工具依賴(lài)于機(jī)器學(xué)習(xí),有些甚至使用深度學(xué)習(xí)。然而,這些方法往往依賴(lài)于大數(shù)據(jù)集,并且難以實(shí)現(xiàn)。相反,我們將專(zhuān)注于更簡(jiǎn)單、基于規(guī)則的方法來(lái)加快開(kāi)發(fā)周期。

          術(shù)語(yǔ)

          從最小的數(shù)據(jù)單位開(kāi)始,字符是單個(gè)字母、數(shù)字或標(biāo)點(diǎn)符號(hào)。一個(gè)單詞是一個(gè)字符列表,一個(gè)句子是一個(gè)單詞列表。文檔是句子的列表,而語(yǔ)料庫(kù)是文檔的列表。

          預(yù)處理

          預(yù)處理可能是NLP項(xiàng)目中最重要的一步,它涉及到清理輸入,這樣模型就可以忽略噪聲,并將注意力集中在最重要的內(nèi)容上。一個(gè)強(qiáng)大的預(yù)處理管道將提高所有模型的性能,所以必須強(qiáng)調(diào)它的價(jià)值。

          以下是一些常見(jiàn)的預(yù)處理步驟:

          • 「分段」:給定一長(zhǎng)串字符,我們可以用空格分隔文檔,按句點(diǎn)分隔句子,按空格分隔單詞。實(shí)現(xiàn)細(xì)節(jié)將因數(shù)據(jù)集而異。
          • 「使用小寫(xiě)」:大寫(xiě)通常不會(huì)增加性能,并且會(huì)使字符串比較更加困難。所以把所有的東西都改成小寫(xiě)。
          • 「刪除標(biāo)點(diǎn)」:我們可能需要?jiǎng)h除逗號(hào)、引號(hào)和其他不增加意義的標(biāo)點(diǎn)。
          • 「刪除停用詞」:停用詞是像“she”、“the”和“of”這樣的詞,它們不會(huì)增加文本的含義,并且分散對(duì)關(guān)鍵字的注意力。
          • 「刪除其他不相關(guān)單詞」:根據(jù)你的應(yīng)用程序,你可能希望刪除某些不相關(guān)的單詞。例如,如果評(píng)估課程回顧,像“教授”和“課程”這樣的詞可能沒(méi)有用。
          • 「詞干/詞根化」:詞干分析和詞根化都會(huì)生成詞形變化單詞的詞根形式(例如:“running”到“run”)。詞干提取速度更快,但不能保證詞根是英語(yǔ)單詞。詞根化使用語(yǔ)料庫(kù)來(lái)確保詞根是一個(gè)單詞,但代價(jià)是速度。
          • 「詞性標(biāo)注」:詞性標(biāo)注以詞性(名詞、動(dòng)詞、介詞)為依據(jù),根據(jù)詞義和語(yǔ)境來(lái)標(biāo)記單詞。例如,我們可以專(zhuān)注于名詞進(jìn)行關(guān)鍵字提取。

          有關(guān)這些概念的更全面的介紹,請(qǐng)查看以下指南:

          https://towardsdatascience.com/a-practitioners-guide-to-natural-language-processing-part-i-processing-understanding-text-9f4abfd13e72

          這些步驟是成功的預(yù)處理的基礎(chǔ)。根據(jù)數(shù)據(jù)集和任務(wù)的不同,你可以跳過(guò)某些步驟或添加新步驟。通過(guò)預(yù)處理手動(dòng)觀察數(shù)據(jù),并在出現(xiàn)問(wèn)題時(shí)進(jìn)行更正。


          Python庫(kù)

          讓我們來(lái)看看NLP的兩個(gè)主要Python庫(kù)。這些工具將在預(yù)處理期間,占據(jù)非常大的作用

          NLTK

          自然語(yǔ)言工具包是Python中使用最廣泛的NLP庫(kù)。NLTK是UPenn為學(xué)術(shù)目的而開(kāi)發(fā)的,它有大量的特征和語(yǔ)料庫(kù)。NLTK非常適合處理數(shù)據(jù)和運(yùn)行預(yù)處理:https://www.nltk.org/

          NLTK是構(gòu)建Python程序以處理人類(lèi)語(yǔ)言數(shù)據(jù)的領(lǐng)先平臺(tái)。它提供了易于使用的API

          >>>?import?nltk

          >>>?sentence?=?"At?eight?o'clock?on?Thursday?morning?Arthur?didn't?feel?very?good."

          >>>?tokens?=?nltk.word_tokenize(sentence)
          >>>?tokens
          ['At',?'eight',?"o'clock",?'on',?'Thursday',?'morning',?'Arthur',?'did',?"n't",?'feel',?'very',?'good',?'.']

          >>>?tagged?=?nltk.pos_tag(tokens)
          >>>?tagged[0:6]
          [('At',?'IN'),?('eight',?'CD'),?("o'clock",?'JJ'),?('or',?'IN'),?('Thursday',?'NNP'),?('morning',?'NN')]

          這是NLTK網(wǎng)站上的一個(gè)例子,它展示了標(biāo)記句子和標(biāo)記詞性是多么簡(jiǎn)單。

          SpaCy

          SpaCy是一個(gè)現(xiàn)代的的庫(kù)。雖然NLTK對(duì)每個(gè)特性都有多個(gè)實(shí)現(xiàn),但是SpaCy保留性能最好的實(shí)現(xiàn)。Spacy支持多種功能,有關(guān)詳細(xì)信息,請(qǐng)閱讀文檔:https://spacy.io/

          只需幾行代碼,我們就可以使用SpaCy執(zhí)行命名實(shí)體識(shí)別。使用SpaCy api可以快速完成許多其他任務(wù)。

          import?spacy

          nlp?=?spacy.load("en_core_web_sm")
          text?=?("When?Sebastian?Thrun?started?working?on?self-driving?cars?at?"
          ????????"Google?in?2007,?few?people?outside?of?the?company?took?him?seriously")
          ????????
          doc?=?nlp(text)
          for?entity?in?doc.ents:
          ????print(entity.text,?entity.label_)

          #?輸出
          #?Sebastian?Thrun
          #?谷歌組織
          #?2007日期

          GenSim

          與NLTK和SpaCy不同,GenSim專(zhuān)門(mén)解決信息檢索(IR)問(wèn)題。GenSim的開(kāi)發(fā)重點(diǎn)是內(nèi)存管理,它包含許多文檔相似性模型,包括Latent Semantic Indexing、Word2Vec和FastText:https://github.com/RaRe-Technologies/gensim

          Gensim是一個(gè)Python庫(kù),用于主題模型、文檔索引和大型語(yǔ)料庫(kù)的相似性檢索:https://github.com/RaRe-Technologies/gensim

          下面是一個(gè)預(yù)先訓(xùn)練的GenSim Word2Vec模型的例子,它可以發(fā)現(xiàn)單詞的相似性。不用擔(dān)心那些雜亂無(wú)章的細(xì)節(jié),我們可以很快得到結(jié)果。

          import?gensim.downloader?as?api
          wv?=?api.load("word2vec-google-news-300")

          pairs?=?[
          ????('car',?'minivan'),????#?小型貨車(chē)是一種汽車(chē)
          ????('car',?'bicycle'),????#?也是有輪子的交通工具
          ????('car',?'airplane'),???#?沒(méi)有輪子,但仍然是交通工具
          ????('car',?'cereal'),?????#?...?等等
          ????('car',?'communism'),
          ]

          for?w1,?w2?in?pairs:
          ????print('%r\t%r\t%.2f?%?(w1,?w2,?wv.similarity(w1,?w2)))
          ??????????
          #?輸出
          #?'
          car'???'minivan'????0.69
          #?'
          car'???'bicycle'????0.54
          #?'
          car'???'airplane'???0.42
          #?'
          car'???'cereal'?????0.14
          #?'
          car'???'communism'??0.06

          還有更多…

          這個(gè)列表并不全面,但涵蓋了一些用例。我建議檢查這個(gè)存儲(chǔ)庫(kù)以獲取更多的工具和參考:https://github.com/keon/awesome-nlp


          應(yīng)用

          既然我們已經(jīng)討論了預(yù)處理方法和Python庫(kù),讓我們用幾個(gè)例子把它們放在一起。對(duì)于每種算法,我將介紹幾個(gè)NLP算法,根據(jù)我們的快速開(kāi)發(fā)目標(biāo)選擇一個(gè),并使用其中一個(gè)庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的實(shí)現(xiàn)。

          應(yīng)用1:預(yù)處理

          預(yù)處理是任何NLP解決方案的關(guān)鍵部分,所以讓我們看看如何使用Python庫(kù)來(lái)加快處理速度。根據(jù)我的經(jīng)驗(yàn),NLTK擁有我們所需的所有工具,并針對(duì)獨(dú)特的用例進(jìn)行定制。讓我們加載一個(gè)樣本語(yǔ)料庫(kù):

          import?nltk

          #?加載brown語(yǔ)料庫(kù)
          corpus?=?nltk.corpus.brown

          #?訪(fǎng)問(wèn)語(yǔ)料庫(kù)的文件
          print(corpus.fileids())

          #?輸出
          ['ca01',?'ca02',?'ca03',?'ca04',?'ca05',?'ca06',?'ca07',?'ca08',?'ca09',?'ca10',?'ca11',?'ca12',?'ca13',?'ca14',?'ca15',?'ca16',
          ?'ca17',?'ca18',?'ca19',?'ca20',?'ca21',?'ca22',?'ca23',?'ca24',?'ca25',?'ca26',?'ca27',?'ca28',?'ca29',?'ca30',?'ca31',?'ca32',
          ?'ca33',?'ca34',?'ca35',?'ca36',?'ca37',?'ca38',?'ca39',?'ca40',?'ca41',?'ca42',?'ca43',?'ca44',?'cb01',?'cb02',?'cb03',?'c...

          按照上面定義的管道,我們可以使用NLTK來(lái)實(shí)現(xiàn)分段、刪除標(biāo)點(diǎn)和停用詞、執(zhí)行詞干化等等。看看刪除停用詞是多么容易:

          from?nltk.corpus?import?stopwords

          sw?=?stopwords.words("english")
          sw?+=?""??#?空字符串

          def?remove_sw(doc):
          ????sentences?=?[]
          ????for?sentence?in?doc:
          ????????sentence?=?[word?for?word?in?sentence?if?word?not?in?sw]
          ????????sentences.append(sentence)
          ????return?sentences

          print("With?Stopwords")
          print(doc1[1])
          print()

          doc1?=?remove_sw(doc1)

          print("Without?Stopwords")
          print(doc1[1])

          #?輸出
          #?有停用詞
          #?['the',?'jury',?'further',?'said',?'in',?'presentments',?'that',?'the',?'city',?'executive',?'committee',?'which',?'had',
          #?'charge',?'of',?'the',?'election',?'deserves',?'the',?'praise',?'and',?'thanks',?'of',?'the',?'city',?'of',?'atlanta',?'for',?
          #?'the',?'manner',?'in',?'which',?'the',?'election',?'was',?'conducted']

          #?沒(méi)有停用詞
          #?['jury',?'said',?'presentments',?'city',?'executive',?'committee',?'charge',?'election',?'deserves',?'praise',?'thanks',?'city',
          #?'atlanta',?'manner',?'election',?'conducted']

          整個(gè)預(yù)處理管道占用了我不到40行Python。請(qǐng)參閱此處的完整代碼。記住,這是一個(gè)通用的示例,你應(yīng)該根據(jù)你的特定用例的需要修改流程。

          應(yīng)用2:文檔聚類(lèi)

          文檔聚類(lèi)是自然語(yǔ)言處理中的一個(gè)常見(jiàn)任務(wù),所以讓我們來(lái)討論一些方法。這里的基本思想是為每個(gè)文檔分配一個(gè)表示所討論主題的向量:

          如果向量是二維的,我們可以像上面一樣可視化文檔。在這個(gè)例子中,我們看到文檔A和B是緊密相關(guān)的,而D和F是松散相關(guān)的。即使這些向量是3維、100維或1000維,使用距離度量的話(huà),我們也可以計(jì)算相似性。

          下一個(gè)問(wèn)題是如何使用非結(jié)構(gòu)化文本輸入為每個(gè)文檔構(gòu)造這些向量。這里有幾個(gè)選項(xiàng),從最簡(jiǎn)單到最復(fù)雜的:

          • 詞袋:為每個(gè)唯一的單詞分配一個(gè)索引。給定文檔的向量是每個(gè)單詞出現(xiàn)的頻率。

          • TF-IDF:根據(jù)單詞在其他文檔中的常見(jiàn)程度來(lái)加強(qiáng)表示。如果兩個(gè)文檔共享一個(gè)稀有單詞,則它們比共享一個(gè)公共單詞更相似。

          • 潛在語(yǔ)義索引(LSI):詞袋和TF-IDF可以創(chuàng)建高維向量,這使得距離測(cè)量的準(zhǔn)確性降低。LSI將這些向量壓縮到更易于管理的大小,同時(shí)最大限度地減少信息損失。

          • Word2Vec:使用神經(jīng)網(wǎng)絡(luò),從大型文本語(yǔ)料庫(kù)中學(xué)習(xí)單詞的關(guān)聯(lián)關(guān)系。然后將每個(gè)單詞的向量相加得到一個(gè)文檔向量。

          • Doc2Vec:在Word2Vec的基礎(chǔ)上構(gòu)建,但是使用更好的方法從單詞向量列表中近似文檔向量。

          Word2Vec和Doc2Vec非常復(fù)雜,需要大量的數(shù)據(jù)集來(lái)學(xué)習(xí)單詞嵌入。我們可以使用預(yù)訓(xùn)練過(guò)的模型,但它們可能無(wú)法很好地適應(yīng)領(lǐng)域內(nèi)的任務(wù)。相反,我們將使用詞袋、TF-IDF和LSI。

          現(xiàn)在選擇我們的庫(kù)。GenSim是專(zhuān)門(mén)為這個(gè)任務(wù)而構(gòu)建的,它包含所有三種算法的簡(jiǎn)單實(shí)現(xiàn),所以讓我們使用GenSim。

          對(duì)于這個(gè)例子,讓我們?cè)俅问褂肂rown語(yǔ)料庫(kù)。它有15個(gè)文本類(lèi)別的文檔,如“冒險(xiǎn)”、“編輯”、“新聞”等。在運(yùn)行我們的NLTK預(yù)處理例程之后,我們可以開(kāi)始應(yīng)用GenSim模型。

          首先,我們創(chuàng)建一個(gè)將標(biāo)識(shí)映射到唯一索引的字典。

          from?gensim?import?corpora,?models,?similarities

          dictionary?=?corpora.Dictionary(corpus)
          dictionary.filter_n_most_frequent(1)??#?removes?""
          num_words?=?len(dictionary)
          print(dictionary)
          print()

          print("Most?Frequent?Words")
          top10?=?sorted(dictionary.cfs.items(),?key=lambda?x:?x[1],?reverse=True)[:10]
          for?i,?(id,?freq)?in?enumerate(top10):
          ????print(i,?freq,?dictionary[id])
          ????
          #?輸出
          #?Dictionary(33663?unique?tokens:?['1',?'10',?'125',?'15th',?'16']...)

          #?頻率最高的詞
          #?0?3473?one
          #?1?2843?would
          #?2?2778?say
          #?3?2327?make
          #?4?1916?time
          #?5?1816?go
          #?6?1777?could
          #?7?1665?new
          #?8?1659?year
          #?9?1575?take

          接下來(lái),我們迭代地應(yīng)用詞袋、TF-IDF和潛在語(yǔ)義索引:

          corpus_bow?=?[dictionary.doc2bow(doc)?for?doc?in?corpus]
          print(len(corpus_bow[0]))
          print(corpus_bow[0][:20])

          #?輸出
          #?6106
          #?[(0,?1),?(1,?3),?(2,?1),?(3,?1),?(4,?1),?(5,?1),?(6,?1),?(7,?1),?(8,?1),?(9,?2),?(10,?1),?(11,?1),?(12,?2),?(13,?2),?(14,?2),?(15,
          #?1),?(16,?2),?(17,?2),?(18,?3),?(19,?1)]

          tfidf_model?=?models.TfidfModel(corpus_bow)
          corpus_tfidf?=?tfidf_model[corpus_bow]
          print(len(corpus_tfidf[0]))
          print(corpus_tfidf[0][:20])

          #?輸出
          #?5575
          #?[(0,?0.001040495879718581),?(1,?0.0011016669638018743),?(2,?0.002351365659027428),?(3,?0.002351365659027428),?(4,?
          #?0.0013108697793088472),?(5,?0.005170600993729588),?(6,?0.003391861538746009),?(7,?0.004130105114011007),?(8,?
          #?0.003391861538746009),?(9,?0.008260210228022013),?(10,?0.004130105114011007),?(11,?0.001955787484706956),?(12,?
          #?0.0015918258736505996),?(13,?0.0015918258736505996),?(14,?0.008260210228022013),?(15,?0.0013108697793088472),?(16,?
          #?0.0011452524080876978),?(17,?0.002080991759437162),?(18,?0.004839366251287288),?(19,?0.0013108697793088472)]

          lsi_model?=?models.LsiModel(corpus_tfidf,?id2word=dictionary,?num_topics=20)
          corpus_lsi?=?lsi_model[corpus_tfidf]
          print(len(corpus_lsi[0]))
          print(corpus_lsi[0])

          #?輸出
          #?15
          #?[(0,?0.18682238167974372),?(1,?-0.4437583954806601),?(2,?0.22275580411969662),?(3,?0.06534575527078117),?(4,?
          #?-0.10021080420155845),?(5,?0.06653745783577146),?(6,?0.05025291839076259),?(7,?0.7117552624193217),?(8,?-0.3768886513901333),?(9,?
          #?0.1650380936828472),?(10,?0.13664364557932132),?(11,?-0.03947144082104315),?(12,?-0.03177275640769521),?(13,?
          #?-0.00890543444745628),?(14,?-0.009715808633565214)]

          在大約10行Python代碼中,我們處理了三個(gè)獨(dú)立的模型,并為文檔提取了向量表示。利用余弦相似度進(jìn)行向量比較,可以找到最相似的文檔。

          categories?=?["adventure",?"belles_lettres",?"editorial",?"fiction",?"government",?
          ??????????????"hobbies",?"humor",?"learned",?"lore",?"mystery",?"news",?"religion",
          ??????????????"reviews",?"romance",?"science_fiction"]
          num_categories?=?len(categories)


          for?i?in?range(3):
          ????print(categories[i])
          ????sims?=?index[lsi_model[corpus_bow[i]]]
          ????top3?=?sorted(enumerate(sims),?key=lambda?x:?x[1],?reverse=True,)[1:4]
          ????for?j,?score?in?top3:
          ????????print(score,?categories[j])
          ????print()
          ????
          #?輸出
          #?adventure
          #?0.22929086?fiction
          #?0.20346783?romance
          #?0.19324714?mystery

          #?belles_lettres
          #?0.3659389?editorial
          #?0.3413822?lore
          #?0.33065677?news

          #?editorial
          #?0.45590898?news
          #?0.38146105?government
          #?0.2897901?belles_lettres

          就這樣,我們有結(jié)果了!冒險(xiǎn)小說(shuō)和浪漫小說(shuō)最為相似,而社論則類(lèi)似于新聞和政府。在這里查看完整的代碼:https://github.com/avgupta456/medium_nlp/blob/master/Similarity.ipynb。

          應(yīng)用3:情感分析

          情感分析是將非結(jié)構(gòu)化文本解釋為正面、負(fù)面或中性。情感分析是分析評(píng)論、衡量品牌、構(gòu)建人工智能聊天機(jī)器人等的有用工具。

          與文檔聚類(lèi)不同,在情感分析中,我們不使用預(yù)處理。段落的標(biāo)點(diǎn)符號(hào)、流程和上下文可以揭示很多關(guān)于情緒的信息,所以我們不想刪除它們。

          為了簡(jiǎn)單有效,我建議使用基于模式的情感分析。通過(guò)搜索特定的關(guān)鍵詞、句子結(jié)構(gòu)和標(biāo)點(diǎn)符號(hào),這些模型測(cè)量文本的積極消極性。以下是兩個(gè)帶有內(nèi)置情感分析器的庫(kù):

          「VADER」 情感分析:

          「VADER」 是 Valence Aware Dictionary and sEntiment Recognizer的縮寫(xiě),是NLTK用于情感分析的擴(kuò)展。它使用模式來(lái)計(jì)算情緒,尤其適用于表情符號(hào)和短信俚語(yǔ)。它也非常容易實(shí)現(xiàn)。

          from?vaderSentiment.vaderSentiment?import?SentimentIntensityAnalyzer

          analyzer?=?SentimentIntensityAnalyzer()

          print(analyzer.polarity_scores("This?class?is?my?favorite!!!"))
          print(analyzer.polarity_scores("I?hate?this?class?:("))

          #?輸出
          #?{'neg':?0.0,?'neu':?0.508,?'pos':?0.492,?'compound':?0.5962}
          #?{'neg':?0.688,?'neu':?0.312,?'pos':?0.0,?'compound':?-0.765}
          TextBlob情感分析:

          一個(gè)類(lèi)似的工具是用于情感分析的TextBlob。TextBlob實(shí)際上是一個(gè)多功能的庫(kù),類(lèi)似于NLTK和SpaCy。在情感分析工具上,它與VADER在報(bào)告情感極性和主觀性方面都有所不同。從我個(gè)人的經(jīng)驗(yàn)來(lái)看,我更喜歡VADER,但每個(gè)人都有自己的長(zhǎng)處和短處。TextBlob也非常容易實(shí)現(xiàn):

          from?textblob?import?TextBlob

          testimonial?=?TextBlob("This?class?is?my?favorite!!!")
          print(testimonial.sentiment)

          testimonial?=?TextBlob("I?hate?this?class?:(")
          print(testimonial.sentiment)

          #?輸出
          #?Sentiment(polarity=0.9765625,?subjectivity=1.0)
          #?Sentiment(polarity=-0.775,?subjectivity=0.95)

          注意:基于模式的模型在上面的例子中不能很好地處理這樣的小文本。我建議對(duì)平均四句話(huà)的文本進(jìn)行情感分析。要快速演示這一點(diǎn),請(qǐng)參閱Jupyter Notebook:https://github.com/avgupta456/medium_nlp/blob/master/Sentiment.ipynb

          其他應(yīng)用

          這里有幾個(gè)附加的主題和一些有用的算法和工具來(lái)加速你的開(kāi)發(fā)。

          • 「關(guān)鍵詞提取」:命名實(shí)體識(shí)別(NER)使用SpaCy,快速自動(dòng)關(guān)鍵字提?。≧AKE)使用ntlk-rake
          • 「文本摘要」:TextRank(類(lèi)似于PageRank)使用PyTextRank SpaCy擴(kuò)展,TF-IDF使用GenSim
          • 「拼寫(xiě)檢查」:PyEnchant,SymSpell Python端口

          希望這些示例有助于演示Python中可用于自然語(yǔ)言處理的大量資源。不管問(wèn)題是什么,有人開(kāi)發(fā)了一個(gè)庫(kù)來(lái)簡(jiǎn)化流程。使用這些庫(kù)可以在短時(shí)間內(nèi)產(chǎn)生很好的結(jié)果。


          提示和技巧

          通過(guò)對(duì)NLP的介紹、Python庫(kù)的概述以及一些示例應(yīng)用程序,你幾乎可以應(yīng)對(duì)自己的挑戰(zhàn)了。最后,我有一些技巧和技巧來(lái)充分利用這些資源。

          • 「Python工具」:我推薦Poetry 用于依賴(lài)關(guān)系管理,Jupyter Notebook用于測(cè)試新模型,Black和/或Flake8用于保持代碼風(fēng)格,GitHub用于版本管理。
          • 「保持條理」:從一個(gè)庫(kù)跳到另一個(gè)庫(kù),復(fù)制代碼到當(dāng)前你編寫(xiě)的代碼測(cè)試雖然很容易實(shí)現(xiàn),但是不好。我建議采取你采取合適的更慎重的方法,因?yàn)槟悴幌朐诖颐χ绣e(cuò)過(guò)一個(gè)好的解決方案。
          • 「預(yù)處理」:垃圾進(jìn),垃圾出。實(shí)現(xiàn)一個(gè)強(qiáng)大的預(yù)處理管道來(lái)清理輸入非常重要。目視檢查處理后的文本,以確保所有內(nèi)容都按預(yù)期工作。
          • 「展示結(jié)果」:選擇如何展示你的結(jié)果會(huì)有很大的不同。如果輸出的文本看起來(lái)有點(diǎn)粗糙,可以考慮顯示聚合統(tǒng)計(jì)信息或數(shù)值結(jié)果。

          原文鏈接:https://towardsdatascience.com/natural-language-processing-nlp-dont-reinvent-the-wheel-8cf3204383dd



          往期精彩回顧





          獲取一折本站知識(shí)星球優(yōu)惠券,復(fù)制鏈接直接打開(kāi):

          https://t.zsxq.com/662nyZF

          本站qq群1003271085。

          加入微信群請(qǐng)掃碼進(jìn)群(如果是博士或者準(zhǔn)備讀博士請(qǐng)說(shuō)明):

          瀏覽 72
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本成人精品免费在线视频 | 日韩无码一道本 | 乱伦激情 | 天堂草原电视剧在线观看图片高清 | 日日夜夜狠狠草 |