上來就情感分析?還是先用python去去重吧!

↑ 關注 + 星標 ~ 有趣的不像個技術號

每晚九點,我們準時相約  


大家好,我是黃同學

下面我給大家講講:爲什麼用python情感分析之前應該先去重!

1、原理說明

1)爲什麼要進行數據的句內去重?

  

在做情感分析的時候,有時候需要對文本進行分詞,做詞頻統計。上圖是某個店鋪的留言數據,對於第26條,只是爲了說明“東西很好,很好用!”,但是爲了湊字數留言,就寫成了如圖所示。但是我們在進行詞頻統計的時候,只統計“東西很好,很好用!”一次就夠了,因此,就需要用到“數據的句內去重”。

2)以“單字詞”爲例,進行原理說明

3)原理說明

  通過上圖可以發現,進行詞語句內去重,首先判斷位置j到j+1位置的元素是否相等,如果相等,再判斷j+1處的元素和j+2處的元素是否相等,這樣依次進行下去。

  由於原理不好用語言,進行詳細敘述,因此你可以好好琢磨一下下面的代碼。對於不懂的地方,可以在博客中留言說明。

2、“單字詞”句內去重

st = "我很是好好好好好好呀"

for j in range(len(st)):
    if st[j:j+1] == st[j+1:j+2]:
        k = j + 1
        while st[k:k+1] == st[k+1:k+2] and k<len(st):  # k<len(st)是爲了退出這個while循環,否則一直循環
            k = k + 1
        st = st[:j] + st[k:]
        
st

結果如下:

3、“雙字詞”句內去重

st = "今天天氣天氣天氣天氣好哦"

for j in range(len(st)):
    if st[j:j+2] == st[j+2:j+4]:
        k = j + 2
        while st[k:k+2] == st[k+2:k+4] and k<len(st):
            k = k + 2
        st = st[:j] + st[k:]
        
st

結果如下:

4、“三字詞”句內去重

st = "我天氣好天氣好天氣好哈"

for j in range(len(st)):
    if st[j:j+3] == st[j+3:j+6]:
        k = j + 3
        while st[k:k+3] == st[k+3:k+6] and k<len(st):
            k = k + 3
        st = st[:j] + st[k:]
        
st

結果如下:

5、將上述情況,封裝成函數

def func(st):
    for i in range(1,int(len(st)/2)+1):
        for j in range(len(st)):
            if st[j:j+i] == st[j+i:j+2*i]:
                k = j + i
                while st[k:k+i] == st[k+i:k+2*i] and k<len(st):
                    k = k + i
                st = st[:j] + st[k:]
    return st
    
st = "我愛你我愛你我愛你好你好你好哈哈哈哈哈"
func(st)

結果如下:

近期文章,點擊圖片即可查看

後臺回覆關鍵詞「進羣」,即刻加入讀者交流羣~

歡迎大家分享各種實戰經驗

朱小五

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章