首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PySpark ML中创建自定义标记器

如何在PySpark ML中创建自定义标记器
EN

Stack Overflow用户
提问于 2018-01-16 17:56:30
回答 1查看 3.3K关注 0票数 2
代码语言:javascript
复制
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)

如果我运行命令

代码语言:javascript
复制
tokenized.head()

我希望得到这样的结果

代码语言:javascript
复制
Row(id=0, sentence='Hi I heard about Spark',
    words=['H','i',' ','h','e',‘a’,……])

但是现在的结果是,

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-16 19:02:13

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

如果您传递一个空模式并保留gaps=True (这是默认设置),您应该会得到您想要的结果:

代码语言:javascript
复制
from pyspark.ml.feature import RegexTokenizer

tokenizer = RegexTokenizer(inputCol="sentence", outputCol="words", pattern="")
tokenized = tokenizer.transform(sentenceDataFrame)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48278489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档