中英文分词简介
中英文分词是进行机器学习文本处理方面必须进行的一步,就类似于机器学习中图像处理的降噪,英文分词主要是将标点符号与英文单词进行分隔,中文分词就是讲每个词组进行分隔,ex:‘我是一只程序猿’------>‘我’、‘是’、‘一只’、‘程序猿’,分词是文本处理中数据预处理的必做工作。
英文分词
英文分词我们使用nltk中提供的WordPunctTokenizer来进行分词,nltk库还是很好用的,详细的代码请看中文分词~
额,重新说明一下,使用WordPunctTokenizer来进行分词的话它是按照标点符号进行分词的,也就是说如果有数据: 22.13% 他会给你分成 22 . 13 %,这样的效果,我们要的效果应该是 22.13 %。
nltk还提供一个分词函数:
import nltk
sentences='hello world , what is your name? the number of the money is 22.13 % '
words=nltk.word_tokenize(sentences)
print(words)
中文分词
中文分词我们要感谢哈工大自然语言处理平台ltp,提供了pyltp模块来进行分词以及分句的处理,话不多说,这是使用说明以及下载说明
直接上中英文分词的详细代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
from nltk.tokenize import WordPunctTokenizer as WPT
from pyltp import Segmentor
LTP_DATA_DIR = 'ltp-models/ltp_data' #ltp模型路径
cws_model_path = os.path.join(LTP_DATA_DIR,'cws.model') #分词模型路径
def fenci():
with open('分句/all_en.en','r',encoding='utf-8') as f:
sentence_en=f.readlines()
count=0
for i in range(len(sentence_en)):
words_en=WPT().tokenize(sentence_en[i])
fen_en_sentence=' '.join(words_en)
save_data(fen_en_sentence,count)
with open('分句/all.zh','r',encoding=