我使用Spark NLP管道来预处理我的数据。规范化器不仅删除标点符号,还删除了变音符。
我代码:
documentAssembler = DocumentAssembler()
.setInputCol("column")
.setOutputCol("column_document")
.setCleanupMode('shrink_full')
tokenizer = Tokenizer()
.setInputCols(["column_document"])
.setOutputCol("column_token")
.setMinLength(2)
.setMaxLength(30)
normalizer = Normalizer()
.setInputCols(["column_token"])
.setOutputCol("column_normalized")
.setCleanupPatterns(["[^w -]|_|-(?!w)|(?<!w)-"])
.setLowercase(True)
的例子:
Ich esse gerne Äpfel vom Biobauernhof Reutter-Müller, die schmecken besonders gut!
输出:Ich esse gerne pfel vom Biobauernhof Reutter Mller die schmecken besonders gut
预期输出:
Ich esse gerne Äpfel vom Biobauernhof Reutter-Müller die schmecken besonders gut
默认情况下,w
模式不支持unicode,您需要使用regex选项使其支持unicode。在这种情况下,使用嵌入式标志选项(?U)
:
"(?U)[^w -]|_|-(?!w)|(?<!w)-"
更多细节请参考文档:
当指定此标志时,则(仅限US-ASCII)预定义字符类和POSIX字符类符合Unicode技术标准#18:Unicode正则表达式附件C:兼容性属性。
UNICODE_CHARACTER_CLASS模式也可以通过嵌入的标志表达式
(?U)
来启用。该标志暗示UNICODE_CASE,也就是说,它允许unicode感知的大小写折叠。