在Python中实现分词有很多方法,具体取决于你的应用场景和数据。下面我会介绍一种常用的分词库——jieba。如果你的数据是英文,你也可以使用nltk库。
中文分词
使用jieba进行中文分词:
首先,你需要安装jieba库。如果还未安装,请在命令行输入以下命令:
pip install jieba
使用下面的代码进行分词
import jieba sentence = "我来到北京清华大学" words = jieba.cut(sentence) print(' '.join(words))
运行以上代码,输出结果为:“我 来 到 北京 清华大学”
jieba.cut`方法返回的是一个可迭代的generator,也可以直接在for循环中使用它。
英文分词
首先,需要安装nltk库。如果还未安装,请在命令行输入以下命令
pip install nltk
然后使用下面的代码进行分词:
import nltk sentence = "I am going to the park" words = nltk.word_tokenize(sentence) print(words)
运行以上代码,输出结果为:['I', 'am', 'going', 'to', 'the', 'park']
注意:对于nltk库,如果你的数据是英文,可以直接使用nltk.word_tokenize
方法;如果是中文,需要先下载并使用nltk.download('punkt')
来下载英文分词器。
多种语言分词
使用spacy可以完成多国语言分词
spacy官网
安装spacy(时间微长)
pip install spacy
安装字典这里以英文中文为例,其他参考官网
#中文 python -m spacy download zh_core_web_sm #英文 python -m spacy download en_core_web_sm
分词(判断是不是一个句子)
def is_a_word(lang_code, text): print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>is_a_word") print(lang_code) if lang_code.lower() == "en": nlp = spacy.load("en_core_web_sm") # 加载英文模型 elif lang_code.lower() == "zh": nlp = spacy.load("zh_core_web_sm") # 加载中文模型 elif lang_code.lower() == "fr": nlp = spacy.load("fr_core_news_sm") # 加载法语模型 elif lang_code.lower() == "de": nlp = spacy.load("de_core_news_sm") # 加载德语模型 elif lang_code.lower() == "es": nlp = spacy.load("es_core_news_sm") # 加载西班牙语模型 elif lang_code.lower() == "it": nlp = spacy.load("it_core_news_sm") # 加载意大利模型 else: print("输入了非法的语言Code") return False doc = nlp(text) tokens = [token.text for token in doc] return len(tokens) == 1 and tokens[0] == text