Java 类名:com.alibaba.alink.pipeline.nlp.RegexTokenizer
Python 类名:RegexTokenizer
功能介绍
通过正则表达式对文本进行切分或者匹配操作。
使用方式
文本列通过参数 selectedCol 指定,切分或者匹配用的正则表达式通过参数 pattern 指定。
当参数 gaps 为 True 时,对文本进行切分操作(类似于分词); 当参数 gaps 为 为 False 时,将提取匹配正则表达式的词语。
对于处理后的结果,还可以通过参数 minTokenLength 根据长度筛掉词语,或者通过参数 toLowerCase 将所有词语转为小写。
参数说明
名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
---|---|---|---|---|---|---|
selectedCol | 选中的列名 | 计算列对应的列名 | String | ✓ | ||
gaps | 切分/匹配 | 如果gaps为True,pattern用于切分文档;如果gaps为False,会提取出匹配pattern的词。 | Boolean | true | ||
minTokenLength | 词语最短长度 | 词语的最短长度,小于这个值的词语会被过滤掉 | Integer | 1 | ||
outputCol | 输出结果列 | 输出结果列列名,可选,默认null | String | null | ||
pattern | 分隔符/正则匹配符 | 如果gaps为True,pattern用于切分文档;如果gaps为False,会提取出匹配pattern的词。 | String | “\s+” | ||
reservedCols | 算法保留列名 | 算法保留列 | String[] | null | ||
toLowerCase | 是否转换为小写 | 转换为小写 | Boolean | true | ||
numThreads | 组件多线程线程个数 | 组件多线程线程个数 | Integer | 1 |
代码示例
Python 代码
df = pd.DataFrame([
[0, 'That is an English Book!'],
[1, 'Do you like math?'],
[2, 'Have a good day!']
])
inOp1 = BatchOperator.fromDataframe(df, schemaStr='id long, text string')
op = RegexTokenizer().setSelectedCol("text").setGaps(False).setToLowerCase(True).setOutputCol("token").setPattern(
"\\w+")
op.transform(inOp1).print()
Java 代码
import org.apache.flink.types.Row;
import com.alibaba.alink.operator.batch.BatchOperator;
import com.alibaba.alink.operator.batch.source.MemSourceBatchOp;
import com.alibaba.alink.pipeline.nlp.RegexTokenizer;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
public class RegexTokenizerTest {
@Test
public void testRegexTokenizer() throws Exception {
List <Row> df = Arrays.asList(
Row.of(0, "That is an English Book!"),
Row.of(1, "Do you like math?"),
Row.of(2, "Have a good day!")
);
BatchOperator <?> inOp1 = new MemSourceBatchOp(df, "id int, text string");
RegexTokenizer op = new RegexTokenizer().setSelectedCol("text").setGaps(false).setToLowerCase(true)
.setOutputCol("token").setPattern("\\w+");
op.transform(inOp1).print();
}
}
运行结果
| id | text | token | | —- | —- | —- |
| 0 | That is an English Book! | that is an english book |
| 1 | Do you like math? | do you like math |
| 2 | Have a good day! | have a good day |