日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

短文本分析----基于python的TF-IDF特征词标签自动化提取

發(fā)布時間:2024/10/12 python 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 短文本分析----基于python的TF-IDF特征词标签自动化提取 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

緒論

最近做課題,需要分析短文本的標(biāo)簽,在短時間內(nèi)學(xué)習(xí)了自然語言處理,社會標(biāo)簽推薦等非常時髦的技術(shù)。我們的需求非常類似于從大量短文本中獲取關(guān)鍵詞(融合社會標(biāo)簽和時間屬性)進(jìn)行用戶畫像。這一切的基礎(chǔ)就是特征詞提取技術(shù)了,本文主要圍繞關(guān)鍵詞提取這個主題進(jìn)行介紹(英文)。

不同版本python混用(官方用法)

Python2 和python3 是一個神一般的存在,如何讓他們共存呢,直到我用了pycharm我才知道為啥這么多人選擇它,如下圖所示配置兩個目錄直接可以混用了,叼炸天。

插播一個廣告,想修改pycharm中python注釋的顏色找了半天居然得這么搞:

當(dāng)大家搜索如何在系統(tǒng)中混合使用python2和python3,國內(nèi)網(wǎng)站經(jīng)常會讓大家把其中一個python.exe改個名字,這樣區(qū)分開兩個可執(zhí)行文件的名字,但是這樣做有一個重大的隱患,就是修改了名字的那個python對應(yīng)的pip將無法使用。有時候還是需要用用命令行的,怎么辦?

  • 官方用法為:
      在安裝Python3(>=3.3)時,Python的安裝包實(shí)際上在系統(tǒng)中安裝了一個啟動器py.exe,默認(rèn)放置在文件夾C:\Windows\下面。這個啟動器允許我們指定使用Python2還是Python3來運(yùn)行代碼(當(dāng)然前提是你已經(jīng)成功安裝了Python2和Python3)。
      
      如果你有一個Python文件叫 hello.py,那么你可以這樣用Python2運(yùn)行它
      

    py -2 hello.py

      類似的,如果你想用Python3運(yùn)行它,就這樣

    py -3 hello.py

      去掉參數(shù) -2/-3
      
      每次運(yùn)行都要加入?yún)?shù)-2/-3還是比較麻煩,所以py.exe這個啟動器允許你在代碼中加入說明,表明這個文件應(yīng)該是由python2解釋運(yùn)行,還是由python3解釋運(yùn)行。說明的方法是在代碼文件的最開始加入一行
      

    #! python2

    或者

    #! python3

      分別表示該代碼文件使用Python2或者Python3解釋運(yùn)行。這樣,運(yùn)行的時候你的命令就可以簡化為
      

    py hello.py

  • 使用pip
      
      當(dāng)Python2和Python3同時存在于windows上時,它們對應(yīng)的pip都叫pip.exe,所以不能夠直接使用 pip install 命令來安裝軟件包。而是要使用啟動器py.exe來指定pip的版本。命令如下:
      

    py -2 -m pip install XXXX

      -2 還是表示使用 Python2,-m pip 表示運(yùn)行 pip 模塊,也就是運(yùn)行pip命令了。如果是為Python3安裝軟件,那么命令類似的變成
      

    py -3 -m pip install XXXX
      

  • #! python2 和 # coding: utf-8 哪個寫在前面?

      對于Python2用戶還有另外一個困惑,Python2要在代碼文件頂部增加一行說明,才能夠在代碼中使用中文。如果指明使用的Python版本也需要在文件頂部增加一行,那哪一行應(yīng)該放在第一行呢?
      
      #! python2 需要放在第一行,編碼說明可以放在第二行。所以文件開頭應(yīng)該類似于:
      

    #!python2
    # coding: utf-8

      有了這些技巧,Python2和Python3就可以愉快地在一起玩耍了~
      
      Python標(biāo)準(zhǔn):https://www.python.org/dev/peps/pep-0397/

信息檢索概述

信息檢索是當(dāng)前應(yīng)用十分廣泛的一種技術(shù),論文檢索、搜索引擎都屬于信息檢索的范疇。通常,人們把信息檢索問題抽象為:在文檔集合D上,對于由關(guān)鍵詞w[1] … w[k]組成的查詢串q,返回一個按查詢q和文檔d匹配度 relevance (q, d)排序的相關(guān)文檔列表D。

對于這一基問題,先后出現(xiàn)了布爾模型、向量模型等各種經(jīng)典的信息檢索模型,它們從不同的角度提出了自己的一套解決方案。

布爾模型以集合的布爾運(yùn)算為基礎(chǔ),查詢效率高,但模型過于簡單,無法有效地對不同文檔進(jìn)行排序,查詢效果不佳。

向量模型把文檔和查詢串都視為詞所構(gòu)成的多維向量,而文檔與查詢的相關(guān)性即對應(yīng)于向量間的夾角。不過,由于通常詞的數(shù)量巨大,向量維度非常高,而大量的維度都是0,計(jì)算向量夾角的效果并不好。另外,龐大的計(jì)算量也使得向量模型幾乎不具有在互聯(lián)網(wǎng)搜索引擎這樣海量數(shù)據(jù)集上實(shí)施的可行性。

TF-IDF原理概述

如何衡量一個特征詞在文本中的代表性呢?以往就是通過詞出現(xiàn)的頻率,簡單統(tǒng)計(jì)一下,從高到低,結(jié)果發(fā)現(xiàn)了一堆的地得,和英文的介詞in of with等等,于是TF-IDF應(yīng)運(yùn)而生。

TF-IDF不但考慮了一個詞出現(xiàn)的頻率TF,也考慮了這個詞在其他文檔中不出現(xiàn)的逆頻率IDF,很好的表現(xiàn)出了特征詞的區(qū)分度,是信息檢索領(lǐng)域中廣泛使用的一種檢索方法。

Tf-idf算法公式以及說明:

具體實(shí)現(xiàn)如下所示,公式分成兩項(xiàng),詞頻*逆詞頻,逆詞頻取log值。


注意分母中的+1,在很多文獻(xiàn)中并沒有出現(xiàn),這個可能引發(fā)異常。

本人寫了一份代碼近期正在修改,后續(xù)傳到github 上,再貼出來。文章末尾貼出了兩份我認(rèn)為比較好的代碼,一份是面向?qū)ο蟮膶?shí)現(xiàn)一份是分布式的。

tfidf源代碼實(shí)現(xiàn)及相關(guān)博客資料:

python scikit-learn計(jì)算tf-idf詞語權(quán)重(scikit-learn包中提供了tfidf的矩陣實(shí)現(xiàn),缺點(diǎn)是詞數(shù)量過大可能溢出)
http://www.tuicool.com/articles/U3uiiu

http://www.cnblogs.com/chenbjin/p/3851165.html
http://blog.csdn.net/liuxuejiang158blog/article/details/31360765?utm_source=tuicool&utm_medium=referral
http://blog.csdn.net/lsldd/article/details/41520953
http://blog.csdn.net/zhb_bupt/article/details/40985831
http://www.tuicool.com/articles/feIji2

參考文獻(xiàn)

  • http://www.ruanyifeng.com/blog/2013/03/tf-idf.html
  • https://news.cnblogs.com/n/161240/ (tf-idf的概率解釋)
  • https://www.python.org/dev/peps/pep-0397/ (python不同版本共存官方文檔)
  • http://mt.sohu.com/20160416/n444499895.shtml (python版本混用中文翻譯)
  • github代碼:

    https://github.com/mirsamantajbakhsh/TFIDF
    https://github.com/laertispappas/mapreduce_python
    (分布式版本)

    轉(zhuǎn)載于:https://www.cnblogs.com/wuyida/p/6301236.html

    總結(jié)

    以上是生活随笔為你收集整理的短文本分析----基于python的TF-IDF特征词标签自动化提取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。