<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>

          Python 文本數(shù)據(jù)預處理實踐

          共 3979字,需瀏覽 8分鐘

           ·

          2021-04-07 17:12

          在進行數(shù)據(jù)分析與可視化之前,得先處理好數(shù)據(jù),而很多時候需要處理的都是文本數(shù)據(jù),本文總結(jié)了一些文本預處理的方法。

          將文本中出現(xiàn)的字母轉(zhuǎn)化為小寫
          input_str = """
          There are some people who think love is sex 
          And marriage
          And six o'clock-kisses
          And children,
          And perhaps it is,
          Miss Lester.
          But do you know what I think?
          I think love is a touch and yet not a touch
          """

          input_str = input_str.lower()
          print(input_str)

          結(jié)果如下:

          刪除或者提取文本中出現(xiàn)的數(shù)字
          如果文本中的數(shù)字與文本分析無關(guān)的話,那就刪除這些數(shù)字。
          import re

          input_str = 'Hello Python123 666 Hi jupyter notebook 1111'
          result = re.sub(r'\d+''', input_str)
          print(result)

          結(jié)果如下:

          而在有些情況下,比如獲取的數(shù)據(jù)中,招聘崗位信息里薪資是 15K 這樣的,商品購買信息里商品購買人數(shù)是 8500+ 人購買了此商品,這時我們需要從中提取出數(shù)字。

          input_str = '薪資:15K 8500+人付款 3.0萬+人付款'
          result = re.findall("-?\d+\.?\d*e?-?\d*?", input_str)

          print(result)

          結(jié)果如下:

          濾除文本中標點符號

          import re

          input_str = """This &is [an] example? \葉庭云<< 1""!。。;11???【】>>1 *yetingyun/p:?| {of} string. with.? punctuation!!!!""" 
          s = re.sub(r'[^\w\s]''', input_str)
          print(s)

          結(jié)果如下:

          可以看到文本中亂七八糟的符號都被濾除了,用正則表達式過濾文本中的標點符號,如果空白符也需要過濾,可以使用 r'[^\w]'。原理很簡單:在正則表達式中,\w 匹配字母或數(shù)字或下劃線或漢字(具體與字符集有關(guān)),^\w表示相反匹配。

          刪除兩端無用的空格

          input_str = "   \t    yetingyun   \t    "
          input_str = input_str.strip()
          input_str

          結(jié)果如下:

          中文分詞,濾除停用詞和單個詞

          # 從Github下載停用詞數(shù)據(jù)  https://github.com/zhousishuo/stopwords
          import jieba
          import re

          # 讀取用于測試的文本數(shù)據(jù)  用戶評論
          with open('comments.txt'as f:
              data = f.read()

          # 文本預處理  去除一些無用的字符   只提取出中文出來
          new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S)
          new_data = "/".join(new_data)

          # 文本分詞  精確模式
          seg_list_exact = jieba.cut(new_data, cut_all=False)

          # 加載停用詞數(shù)據(jù)
          with open('stop_words.txt', encoding='utf-8'as f:
              # 獲取每一行的停用詞 添加進集合
              con = f.read().split('\n')
              stop_words = set()
              for i in con:
                  stop_words.add(i)

          # 列表解析式  去除停用詞和單個詞
          result_list = [word for word in seg_list_exact if word not in stop_words and len(word) > 1]
          result_list

          結(jié)果如下:

          首先讀取用于測試的文本數(shù)據(jù),該數(shù)據(jù)是爬取的商品評論,這一類數(shù)據(jù)通常有很多無意義的字詞和符號,通過正則表達式濾除掉無用的符號,只提取出中文出來。使用 jieba 庫進行文本分詞,加載停用詞數(shù)據(jù)到集合,然后一行列表解析式濾除停用詞和單個詞,這樣效率很高。停用詞數(shù)據(jù)可以下載一些公開的,再根據(jù)實際文本處理需要,添加字詞語料進去,使濾除效果更好。

          Github下載停用詞數(shù)據(jù):https://github.com/zhousishuo/stopwords

          SnowNLP是一個 Python 寫的類庫,可以方便的處理中文文本內(nèi)容,是受到了 TextBlob 的啟發(fā)而寫的,由于現(xiàn)在大部分的自然語言處理庫基本都是針對英文的,于是寫了一個方便處理中文的類庫,并且和 TextBlob 不同的是,這里沒有用NLTK,所有的算法都是自己實現(xiàn)的,并且自帶了一些訓練好的字典。注意本程序都是處理的 unicode 編碼,所以使用時請自行 decode 成 unicode 編碼。

          使用 SnowNLP 處理中文文本數(shù)據(jù)非常方便,以詞性標注關(guān)鍵詞提取為例:

          from snownlp import SnowNLP

          word = u'今天天氣好 這個姑娘真好看'
          s = SnowNLP(word)
          print(s.words)        # 分詞
          print(list(s.tags))   # 詞性標注
          from snownlp import SnowNLP

          text = u'''
          自然語言處理是計算機科學領(lǐng)域與人工智能領(lǐng)域中的一個重要方向。
          它研究能實現(xiàn)人與計算機之間用自然語言進行有效通信的各種理論和方法。
          自然語言處理是一門融語言學、計算機科學、數(shù)學于一體的科學。
          因此,這一領(lǐng)域的研究將涉及自然語言,即人們?nèi)粘J褂玫恼Z言,
          所以它與語言學的研究有著密切的聯(lián)系,但又有重要的區(qū)別。
          自然語言處理并不是一般地研究自然語言,
          而在于研制能有效地實現(xiàn)自然語言通信的計算機系統(tǒng),
          特別是其中的軟件系統(tǒng)。因而它是計算機科學的一部分。
          '''


          s = SnowNLP(text)
          print(s.keywords(limit=6))        # 關(guān)鍵詞提取


          推薦閱讀:

          https://github.com/isnowfy/snownlp

          https://docs.python.org/3/library/re.html


          更多閱讀



          Python 工具鏈讓你寫的代碼更規(guī)范


          深入淺出 Python 中的遞歸算法


          5分鐘快速掌握 Adam 優(yōu)化算法

          特別推薦




          點擊下方閱讀原文加入社區(qū)會員

          瀏覽 28
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  久久一级二级 | 免费一级婬片A片女人不叫 | 影音先锋中文字幕av在线 | 欧洲久久青青草 | 日韩操逼一级片 |