如何在Ubuntu中运行urdu-tokenizer.py并加载乌尔都语文本文件
嘿,我来帮你搞定在Ubuntu上运行这个乌尔都语分词器的事儿,分步骤来很简单:
一、先搞定环境准备
首先确保你的Ubuntu系统里装了Python3——毕竟这是个Python脚本嘛。打开终端,输入:
python3 --version
如果能看到类似Python 3.8.10这样的版本号,那就没问题。要是没装的话,直接用这条命令安装:
sudo apt update && sudo apt install python3
另外,要是这个分词脚本用到了特殊的Python库(比如regex之类的),运行时如果报错提示找不到库,就用pip3安装:
pip3 install regex
(一般这类基础分词脚本依赖很少,大概率不需要额外装库)
二、运行分词器的两种常用方式
1. 直接输入乌尔都语文本测试
先把你下载的urdu-tokenizer.py放到一个方便的目录里,比如~/urdu-tokenizer/。然后打开终端,进入这个目录:
cd ~/urdu-tokenizer/
接着运行脚本:
python3 urdu-tokenizer.py
这时候终端会等着你输入乌尔都语文本,输入完按回车,就能立刻看到分词后的结果啦。
2. 批量处理本地乌尔都语文本文件
假设你有一个乌尔都语文本文件input_urdu.txt,和分词脚本放在同一个目录里,有两种方法处理它:
方法一:用管道传递文件内容
这条命令会直接把文件内容传给分词脚本,结果输出在终端:cat input_urdu.txt | python3 urdu-tokenizer.py要是想把结果保存到新文件里,就加个重定向:
cat input_urdu.txt | python3 urdu-tokenizer.py > output_tokenized.txt方法二:让脚本直接读取文件(需要小改脚本)
如果原脚本只支持从终端输入文本,你可以稍微改一下脚本,让它能接受文件路径参数。打开urdu-tokenizer.py,找到主逻辑部分,改成类似这样:import sys def main(): # 读取输入:如果传了文件路径就读文件,否则读终端输入 if len(sys.argv) > 1: with open(sys.argv[1], 'r', encoding='utf-8') as f: text = f.read() else: text = sys.stdin.read() # 这里放原脚本里的分词处理逻辑 # ...(原脚本的代码保持不变) if __name__ == "__main__": main()改完之后,就可以直接传文件路径运行了:
python3 urdu-tokenizer.py input_urdu.txt同样,要保存结果就重定向:
python3 urdu-tokenizer.py input_urdu.txt > output_tokenized.txt
三、几个要注意的小细节
编码问题:乌尔都语文本一定要用UTF-8编码,否则会出现乱码。你可以用
file input_urdu.txt查看文件编码,如果不是UTF-8,用这条命令转码:iconv -f 原编码 -t utf-8 input_urdu.txt > input_urdu_utf8.txt(把
原编码换成实际的编码,比如ISO-8859-1)权限问题:要是运行时提示权限不够,给脚本加个执行权限就行:
chmod +x urdu-tokenizer.py之后就可以直接用
./urdu-tokenizer.py来运行脚本啦(前提是脚本开头有#!/usr/bin/env python3这条声明)
内容的提问来源于stack exchange,提问作者Sadaf Naz

