如何解决如何在 pyspark 列上使用`LanguageDetectorDL` spark NLP?
我正在使用 pyspark 数据框。
我有 df 看起来像这样:
df.select('words').show(5,truncate = 130)
+----------------------------------------------------------------------------------------------------------------------------------+
| words |
+----------------------------------------------------------------------------------------------------------------------------------+
|[content,type,multipart,alternative,boundary,nextpart,da,df,content,text,plain,charset,asci...|
|[receive,ameurht,eop,eur,prod,protection,outlook,com,cyprmb,namprd,https,via,cyprca,pr...|
|[plus,every,photographer,need,mm,lens,digital,photography,school,email,newsletter,http,click,aweber,ct,l,m...|
|[content,beb,as...|
|[original,message,customer,service,mailto,ilpjmwofnst,qssadxnvrvc,narrig,stepmotherr,eviews,send,thursday,dece...|
+----------------------------------------------------------------------------------------------------------------------------------+
only showing top 5 rows
我需要在 LanguageDetectorDL
类型的 words
列上使用来自 spark NLP 的 array<strings>
,以便它检测英语语言并仅保留英语单词并删除其他单词。
我已经使用 DocumentAssembler()
将数据转换为注释格式:
documentAssembler = DocumentAssembler().setInputCol('words').setoutputCol('document')
但我不确定如何在列上使用 LanguageDetectorDL
并摆脱非英语单词?
解决方法
Spark-NLP 的语言检测器在字符级别工作。这意味着它不使用字典来匹配单词。 如果您提供完整的句子,它肯定会更好地工作,但如果您只是以您想要检测的语言传递一大串连接的标记,它的性能应该可以接受,例如使用这个可以检测 21 种不同语言的预训练模型,
from sparknlp.pretrained import PretrainedPipeline
language_detector_pipeline = PretrainedPipeline('detect_language_21',lang='xx')
language_detector_pipeline.annotate("«Нападение на 13-й участок»")
{'document': ['«Нападение на 13-й участок»'],'sentence': ['«Нападение на 13-й участок»'],'language': ['bg']}
检查您将使用的语言是否在模型支持的语言中,
https://nlp.johnsnowlabs.com/2020/12/05/detect_language_21_xx.html
并确保您传递一个大约 150 个字符的字符串,以便模型有更多机会返回一个好的答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。