专栏名称: 飞总聊IT
飞总,从事大数据的基础构架研发10余年。本公众号的主要目的是和大家交流我在大数据基础架构,IT前沿发展,职场经验的方面的观点和看法。本公众号仅代表本人的观点,不代表公司观点。
目录
相关文章推荐
南方能源观察  ·  《南方能源观察》电子刊上线!订阅方式戳→ ·  8 小时前  
南方能源观察  ·  《南方能源观察》电子刊上线!订阅方式戳→ ·  昨天  
华夏能源网  ·  谁是2024风电“签单冠军”?金风第一,运达 ... ·  2 天前  
南方能源观察  ·  德国能源转型:政策调整前夜 ·  2 天前  
51好读  ›  专栏  ›  飞总聊IT

上来就情感分析?还是先用python去去重吧!

飞总聊IT  · 公众号  ·  · 2020-03-27 09:00

正文



大家好,我是黄同学


下面我给大家讲讲: 为什么 用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# k
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 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 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 k = k + i
st = st[:j] + st[k:]
return st

st = "我爱你我爱你我爱你好你好你好哈哈哈哈哈"
func(st)


结果如下:









请到「今天看啥」查看全文