Tensorflow文本分类练习
初学tensorflow,借鉴了很多别人的经验,参考博客对评论分类(感谢博主的一系列好文),本人也尝试着实现了对文本数据的分类。
1、数据
这里借用此博客提供的负类数据和正类数据对程序进行验证(再次感谢此博主)。这些数据的每一个样本是对电影的正面或负面的评价。
2、nltk包的安装和使用
对文本数据进行处理,需要借助自然语言处理包NLTK (Natural Language Toolkit) 对每一个样本进行预处理。
(1) 安装 nltk
nltk的安装可采用如下代码:
# pip install nltk
(2) 下载 nltk data, 这是必要的nltk数据包,实现分词、词性标注、命名实体识别等功能都要用到这个数据包
$ python # 进入python
>>> import nltk # 导入nltk
>>> nltk.download() # 下载 nltk data
注意 nltk.download() 会弹出 NLTK Downloader 下载界面,此过程持续时间较长,请耐心等待。
下载过程中可能会出现某些 package 下载失败的情况,此时可点击 All Packages 标签,进而双击下载失败的 package 可单独下载,一般情况下都能下载成功。如果依然有问题,可移步至 nltk data 进行手动下载。
(3) 测试 nltk 是否安装成功
$ python
from nltk.book import *
* **
text1
…
…
…
text9
若出现以上结果,则恭喜你, nltk 安装成功。
3. 分类代码实现
# 用 one-hot vector 表示每个评论样本
import numpy as np
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
from collections import Counter
import tensorflow as tf
import random
# 从文件中获得所包含的所有单词,以及每句话所包含的单词列表
def _ge