如何在pyspark列上使用'languagedetectordl`spark nlp?

omhiaaxx  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(427)

我正在使用pysparkDataframe。
我有一个df,看起来像这样:

df.select('words').show(5, truncate = 130)

+----------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                   words          |
+----------------------------------------------------------------------------------------------------------------------------------+
|[content, type, multipart, alternative, boundary, nextpart, da, df, nextpart, da, df, content, type, text, plain, charset, asci...|
|[receive, ameurht, eop, eur, prod, protection, outlook, com, cyprmb, namprd, prod, outlook, com, https, via, cyprca, namprd, pr...|
|[plus, every, photographer, need, mm, lens, digital, photography, school, email, newsletter, http, click, aweber, com, ct, l, m...|
|[content, type, multipart, alternative, boundary, nextpart, da, beb, nextpart, da, beb, content, type, text, plain, charset, as...|
|[original, message, customer, service, mailto, ilpjmwofnst, qssadxnvrvc, narrig, stepmotherr, eviews, com, send, thursday, dece...|
+----------------------------------------------------------------------------------------------------------------------------------+
only showing top 5 rows

我需要使用 LanguageDetectorDL 从spark nlp开始 words 列,它是 array<strings> 输入,这样它可以检测英语,只保留英语单词并删除其他单词。
我已经用过了 DocumentAssembler() 要将数据转换为注解格式,请执行以下操作:
documentassembler=documentassembler().setinputcol('words').setoutputcol('document')
但我不知道怎么用 LanguageDetectorDL 在专栏上去掉非英语单词?

nwnhqdif

nwnhqdif1#

spark nlp的语言检测器工作在char级别。这意味着它不使用字典来匹配单词。如果你提供完整的句子,它肯定会工作得更好,但是如果你只是传递一个大串的连接标记,在你想要检测的语言中,它应该表现得很好,例如这个预先训练的模型,它可以检测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个字符的字符串,以便模型有更多的机会返回一个好的答案。

相关问题