垃圾与非垃圾检测器
项目描述
垃圾,非垃圾检测器
此工具旨在执行一个简单的任务:从多种语言中检测垃圾文本和非垃圾文本。就像那个著名的hotdog not-hotdog,但应用于自然语言文本。它可以非常有助于测试提取、解压缩和/或解密自然语言文本的工具。
设置
使用fairseq
# Optionally create a brand new conda environment for this
#conda create -n junkdetect python=3.7
#conda activate junkdetect
# Install: use only one of these methods
# 1. from pypi; recommended
pip install junkdetect
# 2. latest master branch
pip install git+https://github.com/thammegowda/junkdetect
# 3. for development
git clone https://github.com/thammegowda/junkdetect \
&& cd junkdetect \
&& pip install --editable .
如何使用
通过pip安装后,可以使用junkdetect
或python -m junkdetect
从命令行调用
printf "This is a good sentence. \nT6785*&^T is 747658 you T&*^\n" | junkdetect
0.999824 This is a good sentence.
0.0747487 T6785*&^T is 747658 you T&*^
输出每行一个输入,两列由\t
分隔。第一列有困惑度
:值越低(即接近0.0)表示垃圾,值越高(接近1.0)表示非垃圾。如果您不希望在输出中包含输入句子,请将其剪除 -- 只需使用junkdetect | cut -f1 > scores.txt
这是如何工作的
junkdetect看起来像是只有几行Python代码,但背后隐藏着大量的复杂性。
它使用在来自100多种语言的数TB网络文本上训练的神经(掩码/自回归)语言模型的困惑度。
具体来说,它使用了来自torch.hub的Facebookresearch的XML-R。引用XML-R的原始开发者和他们的论文(《arxiv.org/pdf/1911.02116.pdf》)中的内容(见表6)。
XLM-R支持以下100种语言:南非荷兰语、阿尔巴尼亚语、阿姆哈拉语、阿拉伯语、亚美尼亚语、阿萨姆语、阿塞拜疆语、巴斯克语、白俄罗斯语、孟加拉语、孟加拉语罗马化、波斯尼亚语、布列塔尼语、保加利亚语、缅甸语、缅甸语、加泰罗尼亚语、简体中文、繁体中文、克罗地亚语、捷克语、丹麦语、荷兰语、英语、世界语、爱沙尼亚语、菲律宾语、芬兰语、法语、加利西亚语、格鲁吉亚语、德语、希腊语、古吉拉特语、豪萨语、希伯来语、印地语、印地语罗马化、匈牙利语、冰岛语、印度尼西亚语、爱尔兰语、意大利语、日语、爪哇语、卡纳达语、哈萨克语、柬埔寨语、韩语、库尔德语(库尔曼吉)、吉尔吉斯语、老挝语、拉丁语、拉脱维亚语、立陶宛语、马其顿语、马达加斯加语、马来语、马拉雅拉姆语、马拉地语、蒙古语、尼泊尔语、挪威语、奥里亚语、奥罗莫语、普什图语、波斯语、波兰语、葡萄牙语、旁遮普语、罗马尼亚语、俄语、梵文、苏格兰盖尔语、塞尔维亚语、信德语、僧伽罗语、斯洛伐克语、斯洛文尼亚语、索马里语、西班牙语、巽他语、斯瓦希里语、瑞典语、泰米尔语、泰米尔语罗马化、泰卢固语、泰卢固语罗马化、泰语、土耳其语、乌克兰语、乌尔都语、乌尔都语罗马化、维吾尔语、乌兹别克语、越南语、威尔士语、西欧、弗里斯兰语、科萨语、意第绪语。
背景故事和致谢
- 这个想法是在与Tim Allison讨论中产生的。他说,使用Apache Tika从PDF等文件中提取文本是否正确非常困难。感谢他让我想到了这个。
- 我阅读了Facebook非常棒的Conneau等人的XML-R论文,这让我印象深刻。虽然XLM团队没有帮我获取困惑度,我不得不自己从他们的代码中挖掘出来,但我仍然要感谢他们通过
torch.hub
提供如此有用的预训练模型,便于使用。
开发者
- Thamme Gowda(编写了0.1版本)
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。