【问题标题】:How to create a custom tokenizer in PySpark ML如何在 PySpark ML 中创建自定义标记器
【发布时间】:2018-01-16 09:56:29
【问题描述】:
sentenceDataFrame = spark.createDataFrame([
        (0, "Hi I heard about Spark"),
        (1, "I wish Java could use case classes"),
        (2, "Logistic,regression,models,are,neat")
    ], ["id", "sentence"])
tokenizer = Tokenizer(inputCol="sentence", outputCol="words") 
tokenized = tokenizer.transform(sentenceDataFrame)

如果我运行命令

tokenized.head()

我想得到这样的结果

Row(id=0, sentence='Hi I heard about Spark',
    words=['H','i',' ','h','e',‘a’,……])

然而,现在的结果是

Row(id=0, sentence='Hi I heard about Spark',
    words=['Hi','I','heard','about','spark'])

PySpark 中的 Tokenizer 或 RegexTokenizer 有什么方法可以实现吗?

类似问题在这里:Create a custom Transformer in PySpark ML

【问题讨论】:

    标签: python apache-spark pyspark spark-dataframe apache-spark-mllib


    【解决方案1】:

    看看pyspark.ml documentationTokenizer 仅按空格分割,但 RegexTokenizer - 顾名思义 - 使用正则表达式来查找分割点或要提取的标记(这可以通过参数 gaps 进行配置)。

    如果你传递一个空模式并留下gaps=True(这是默认值),你应该得到你想要的结果:

    from pyspark.ml.feature import RegexTokenizer
    
    tokenizer = RegexTokenizer(inputCol="sentence", outputCol="words", pattern="")
    tokenized = tokenizer.transform(sentenceDataFrame)
    

    【讨论】:

    • 不客气。如果您的问题解决了,请您接受答案吗?
    • 当然。有一个快乐的一天
    猜你喜欢
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2018-05-18
    • 2017-05-19
    • 2018-12-30
    • 1970-01-01
    • 2017-11-09
    相关资源
    最近更新 更多