码迷,mamicode.com
首页 > 其他好文 > 详细

天池nlp新人赛_task2:数据预处理改进和一些思路

时间:2020-07-22 23:32:39      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:boost   int   tf-idf   set   dev   安装软件   tool   pre   simple   

今天想解决下面几个问题。
1.lightgbm cpu太慢了,我装了gpu的版本,对比了之后发现训练速度从10min缩短到8min。感觉很少,不知道是不是我姿势错误。
过程如下。

  • 安装软件依赖sudo apt-get install --no-install-recommends git cmake build-essential libboost-dev libboost-system-dev libboost-filesystem-dev
  • 安装需要的python库 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple setuptools wheel numpy scipy scikit-learn -U
  • 安装lightGBM-GPU pip install lightgbm --install-option=--gpu --install-option="--opencl-include-dir=/usr/local/cuda/include/" --install-option="--opencl-library=/usr/local/cuda-10.0/lib64/libOpenCL.so"

2.针对数据预处理做些改进
查看文章长度分布

_ = plt.hist(train_data[‘text_len‘], bins=200)
plt.xlabel(‘Text char count‘)
plt.title("Histogram of char count")

查看类别分布

train_data[‘label‘].value_counts().plot(kind=‘bar‘)
plt.title(‘News class count‘)
plt.xlabel("category")

统计所有文本中出现最多的词

from collections import Counter
all_lines = ‘ ‘.join(list(train_data[‘text‘]))
word_count = Counter(all_lines.split(" "))
word_count = sorted(word_count.items(), key=lambda d:d[1], reverse = True)

print(len(word_count))

print(word_count[0])

print(word_count[-1])

统计字符出现的文本个数

from collections import Counter
train_df[‘text_unique‘] = train_df[‘text‘].apply(lambda x: ‘ ‘.join(list(set(x.split(‘ ‘)))))
all_lines = ‘ ‘.join(list(train_df[‘text_unique‘]))
word_count = Counter(all_lines.split(" "))
word_count = sorted(word_count.items(), key=lambda d:int(d[1]), reverse = True)

print(word_count[0])

print(word_count[1])

print(word_count[2])

假设最多的三个字符3750 648 900是句子的标点符号
每篇新闻平均有多少句子构成,句子长度 Sentence length

# 字符3750 648 900是句子的标点符号
# 每篇新闻平均有多少句子构成,句子长度 Sentence length

def Count(x):
    num = 0
    for i in x:
        if i in [‘3750‘, ‘648‘, ‘900‘]:
            num += 1
    return num

train_data[‘sentence_length‘] = train_data[‘text‘].apply(lambda x: Count(x.split(" ")))

统计每类新闻中出现次数最多的几个字符

# 统计每类新闻中出现次数最多的几个字符
from collections import Counter

train_data.groupby([‘label‘])[‘text‘].apply(lambda x: ‘ ‘.join(list(x))).apply(lambda x:
                    sorted(Counter(x.split(" ")).items(), key = lambda d:d[1], reverse = True)).apply(lambda x: x[0:10])

3.可能的改进
尽可能分词,比如将经常成对出现的数字作为一个词,降低TF-IDF的维度
调整TF-IDF的阈值
对TF-IDF提取主成分
对少数样本进行上采样
等等

天池nlp新人赛_task2:数据预处理改进和一些思路

标签:boost   int   tf-idf   set   dev   安装软件   tool   pre   simple   

原文地址:https://www.cnblogs.com/zuotongbin/p/13363402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!