本文将分享5个很棒但不常被提及的Python库,可以帮助你解决各种自然语言处理(NLP)工作。ContractionsContractions可以扩展常见的英文缩写和俚语。它可以快速有效地处理大多数边缘情况,例如缺少撇号。例如:以前需要写一长串正则表达式来展开文本数据(即don't→donot;can't→cannot;haven't→havenot)。收缩可以解决这个问题pipinstallcontractions使用例子文本预处理的重要部分是在不丢失太多含义的情况下创建一致性并减少单词列表。词袋模型和TF-IDF创建大型稀疏矩阵,其中每个变量都是语料库中不同的词汇。减少缩略语可以进一步降低维度,也可以帮助过滤停用词。Distilbert-Punctuator分段并为缺失的标点文本添加标点符号……听起来很简单,对吧?计算机要做到这一点肯定要复杂得多。Distilbert-punctuator是我能找到的唯一可以做到这一点的Python库。而且超级准!那是因为它使用了BERT的精简变体。在结合了20,000多篇新闻文章和4,000个TED演讲稿后,该模型进一步微调以检测句子边界。在插入句末标点符号(例如句号)时,该模型还会适当地将下一个首字母大写。安装pipinstalldistilbert-punctuator库需要相当多的依赖,如果你只是想测试它,你可以在GoogleColab上试试。使用样例fromdbpunctuator.inferenceimportInference,InferenceArgumentsfromdbpunctuator.utilsimportDEFAULT_ENGLISH_TAG_PUNCTUATOR_MAPargs=InferenceArguments(model_name_or_path="Qishuai/distilbert_punctuator_en",tokenizer_name="Qishuai/distilbert_punctuator_en",tag2punctuator=DEFAULT_ENGLISH_TAG_PUNCTUATOR_MAP)punctuator_model=Inference(inference_args=args,verbose=False)text=["""howeverwhenIamelectedIvowtoprotectourAmericanworkforceunlikemyopponentIhavefaithinourperseveranceoursenseoftrustandourdemocraticprincipleswillyousupportme"""]print(punctuator_model.punctuation(text)[0])结果ORIGINAL:howeverwhenIamelectedIvowtoprotectourAmericanworkforceunlikemyopponentIhavefaithinourperseveranceoursenseoftrustandourdemocraticprincipleswillyousupportmeOUTPUT:However,whenIamelected,IvowtoprotectourAmericanworkforce.Unlikemyopponent,Ihavefaithinourperseverance,oursenseoftrustandourdemocraticprinciples.Willyousupportme?如如果你只是想让你的文本数据在语法上更正确并且更容易呈现。无论任务是修复凌乱的Twitter帖子还是聊天机器人消息,这个库都适合你。TextstatTextstat是一个易于使用的轻量级库,它提供有关文本数据的各种指标,例如阅读水平、阅读时间和字数。pipinstalltextstat示例importtextstattext="""Lovethisdress!it'ssoopretty.ihappenedtofinditinastore,andi'mglad??ididbcineverwouldhaveordereditonlinebcit'spetite."""#Fleschreadingeasescoreprint(textstat.flesch_reading_ease(text))#90-100|VeryEasy#80-80|-79|相当简单#60-69|标准#50-59|相当困难#30-49|困难#<30|非常混乱#Readingtime(outputinseconds)#Assuming70milliseconds/characterprint(textstat.reading_time(text,ms_per_char=70))#Wordcountprint(textstat.lexicon_count(text,removepunct=True))结果原文:Lovethisdress!它是sooopretty.ihappenedtofinditinastore,我很高兴ididdbcineverwouldhaveordereditonlinebcit'spetite.OUTPUTS:74.87#readingscoreisconsidered'FairlyEasy'7.98#7.98secondstore增加了一层分析。例如,八卦杂志中名人新闻文章的数据集。使用textstat,你会发现更快更易读的文章更受欢迎,留存率更高。Gibberish-Detector是一个低代码库,其主要目的是检测难以理解的单词(或乱码)。它的模型在大量英语单词上进行了训练。pipinstallgibberish-detector安装完成后,需要自己训练模型,不过这个很简单,一分钟就可以了。训练步骤如下:从这里下载名为big.txt的训练语料库打开CLI并cd到big.txt所在的目录运行以下命令:gibberish-detectortrain.\big.txt>gibberish-detector。模型这将在当前目录中创建一个名为gibberish-detector.model的文件。使用示例fromgibberish_detectorimportdetector#loadthegibberishdetectionmodelDetector=detector.create_from_model('.\gibberish-detector.model')text1="xdnfklskasqd"print(Detector.is_gibberish(text1))text2="apples"print(Detector.is_gibberish(text2))结果True#xdnfklskasqd(thisisgibberish)False#apples(thisisnot)它帮助我从数据集中删除不良观察结果。您还可以为用户输入实施错误处理。例如,如果用户在您的Web应用程序中输入无意义的乱码文本,您可能会返回一条错误消息。将NLPAug的精华留在最后。首先,什么是数据增强?它是通过添加对现有数据稍作修改的副本来扩展训练集大小的任何技术。当现有数据的多样性有限或不平衡时,通常会使用数据增强。对于计算机视觉问题,增强用于通过裁剪、旋转和更改图像的亮度来创建新样本。对于数值数据,聚类技术可用于创建合成实例。但是如果我们正在处理文本数据呢?这就是NLPAug的用武之地。该库可以通过替换或插入语义相关的词来扩充文本。通过使用像BERT这样的预训练语言模型来增强数据是一种强大的方法,因为它考虑了单词的上下文。根据设置的参数,可以用前n个相似词修改文本。预训练词嵌入,例如Word2Vec和GloVe,也可用于用同义词替换单词。pipinstallnlpaug使用示例="""Comeintotownwithmetodaytobuyfood!"""augmented_text=aug_bert.augment(text,n=3)#n:num.ofoutputsprint(augmented_text)结果原始:Comeintotownwithmetodaytobuyfood!输出:?droveintodenverwithmetodayertopurch!今天和爸爸一起去城里买咖啡!?今天和妈妈一起去商店买午餐!假设您正在一个有15k条正面评论和只有4k条负面评论的数据集上训练一个监督分类模型。严重不平衡的数据集会在训练过程中产生偏向多数类(正面评级)的模型。简单地从少数类(负面评论)中复制示例不会向模型添加任何新信息。相反,利用NLPAug的高级文本增强功能来增加少数类的多样性。该技术已被证明可以提高AUC和F1-Score。结论作为数据科学家、Kaggle参与者或一般的程序员,我们需要找到更多工具来简化我们的工作流程,这一点很重要。这使我们能够利用这些库来解决问题、扩充我们的数据集,并花更多时间思考解决方案而不是编写代码。
