NLTK简介
官方地址:https://www.nltk.org/
NLTK 是构建 Python 程序以处理人类语言数据的领先平台。它为超过 50 个语料库和词汇资源(如 WordNet)提供易于使用的界面,以及一套用于分类、标记化、词干提取、标记、解析和语义推理的文本处理库,工业级 NLP 库的包装器
功能
用nltk将文章分割为自然语句
原文章放在1.txt中,处理后生成的成果放在2.txt
这两个文本需要在.py同路径下
代码
#coding=utf-8
import nltk
import re
# 自定义分句标记,包括英文和中文标点
def sentence_tokenize(text):
sentence_enders = re.compile('[。\!\?;;\n\r]+|[.?!]+')
sentence_list = sentence_enders.split(text)
return sentence_list
# 下载模型文件
nltk.download('punkt')
print(nltk.data.path)
# 打开原始文本文件并读取其中的文本内容
with open('1.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 将文本按照两个连续换行符“\n\n”进行分段
paragraphs = text.split('\n\n')
# 将每个段落分句并写入新的文本文件中
with open('2.txt', 'w', encoding='utf-8') as f:
for paragraph in paragraphs:
# 如果段落不为空,则进行分句处理并写入新文件
if paragraph.strip():
sentences = sentence_tokenize(paragraph)
for sentence in sentences:
f.write(sentence.strip() + '\n')
# 如果段落为空,则在新文件中写入一个空行
else:
f.write('\n')
注意事项
- nltk.download(‘punkt’) 可能下载失败
- nltk.download()函数用于下载NLTK库所需的数据集和模型文件。一旦这些文件被下载并安装到用户的计算机上,就可以在不再需要下载的情况下使用NLTK库。因此,一旦您下载了所需的数据集和模型文件,可以将下载后的文件删除,而不会影响到程序对NLTK库的使用。
默认情况下,nltk.download()函数会将数据集和模型文件下载到您的电脑上的一个默认位置。如果您要删除这些文件,请确保知道它们的位置并可以删除它们。
在Python中,使用nltk.data.path命令可以查找nltk.download()函数下载的数据集和模型文件的位置。该命令将返回一个包含字符串的列表,这些字符串是因使用NLTK库而添加到Python中的路径。
# 返回nltk数据集和模型文件所在的路径列表
print(nltk.data.path)
- 使用PyInstaller将Python程序打包为可执行文件时,可以将需要的数据集和模型一起打包到生成的可执行文件中。
运行PyInstaller命令使用–add-data选项将punkt模型文件添加到可执行文件中。例如:
pyinstaller myprogram.py --add-data="C:\Users\myusername\AppData\Roaming\nltk_data\tokenizers\punkt\*.pickle;nltk_data/tokenizers/punkt" --onefile
注意,此命令应当根据您计算机上的实际路径进行修改。这个例子中假设您在本地计算机上使用了默认路径安装了NLTK库,即C:\Users\myusername\AppData\Roaming\nltk_data。
这个命令将punkt模型文件作为一组数据添加到了可执行文件中。–add-data选项的格式是:
--add-data="<src>;<dst>"
其中是要添加的文件或文件夹的路径,是添加到可执行文件中的相应目录。在这个例子中,是*.pickle文件的路径,是nltk_data/tokenizers/punkt,表示它会将*.pickle文件放在生成的exe文件中的nltk_data/tokenizers/punkt目录下。
–onefile选项是将所有需要的文件打包到一个文件中,而不是生成一个文件夹。如果您不想将所有文件打包成一个文件,可以删除–onefile选项,并且在生成的文件夹中,将nltk_data/tokenizers/punkt/复制到与.exe文件相同的目录中。
经过上述步骤,当您运行打包好的可执行文件时,punkt模型文件将被自动提取到本地计算机的临时目录中,以供程序使用。