Java 类名:com.alibaba.alink.pipeline.nlp.BertTextEmbedding
Python 类名:BertTextEmbedding

功能介绍

把文本输入到 BERT 模型,提取某一编码层的 pooled output 作为该句子的 embedding 结果。

参数说明

名称 中文名称 描述 类型 是否必须? 取值范围 默认值
outputCol 输出结果列列名 输出结果列列名,必选 String
selectedCol 选中的列名 计算列对应的列名 String
bertModelName BERT模型名字 BERT模型名字: Base-Chinese,Base-Multilingual-Cased,Base-Uncased,Base-Cased String “Base-Chinese”
doLowerCase 是否将文本转换为小写 是否将文本转换为小写,默认根据模型自动决定 Boolean null
intraOpParallelism Op 间并发度 Op 间并发度 Integer 4
layer 输出第几层 encoder layer 的结果 输出第几层 encoder layer 的结果, -1 表示最后一层,-2 表示倒数第2层,以此类推 Integer -1
maxSeqLength 句子截断长度 句子截断长度 Integer 128
reservedCols 算法保留列名 算法保留列 String[] null

代码示例

Python 代码

  1. from pyalink.alink import *
  2. import pandas as pd
  3. useLocalEnv(1)
  4. df_data = pd.DataFrame([
  5. [1, 'An english sentence.'],
  6. [2, '这是一个中文句子']
  7. ])
  8. batch_data = BatchOperator.fromDataframe(df_data, schemaStr='f1 bigint, f2 string')
  9. BertTextEmbedding() \
  10. .setSelectedCol("f2") \
  11. .setOutputCol("embedding") \
  12. .setLayer(-2) \
  13. .transform(batch_data) \
  14. .print()

Java 代码

  1. import org.apache.flink.types.Row;
  2. import com.alibaba.alink.common.MLEnvironmentFactory;
  3. import com.alibaba.alink.operator.batch.BatchOperator;
  4. import com.alibaba.alink.pipeline.nlp.BertTextEmbedding;
  5. import org.junit.Test;
  6. public class BertTextEmbeddingTest {
  7. @Test
  8. public void testBertTextEmbedding() throws Exception {
  9. Row[] rows1 = new Row[] {
  10. Row.of(1L, "An english sentence."),
  11. Row.of(2L, "这是一个中文句子"),
  12. };
  13. BatchOperator <?> data = BatchOperator.fromTable(
  14. MLEnvironmentFactory.getDefault().createBatchTable(rows1, new String[] {"f1", "f2"}));
  15. new BertTextEmbedding()
  16. .setSelectedCol("f2").setOutputCol("embedding").setLayer(-2)
  17. .setDoLowerCase(true)
  18. .setIntraOpParallelism(4)
  19. .transform(data)
  20. .print();
  21. }
  22. }

运行结果

| f1 | f2 | embedding | | —- | —- | —- |

| 1 | An english sentence. | -0.4501993 0.06074004 0.121287264 -0.27875 0.3… |

| 2 | 这是一个中文句子 | -0.8317032 0.32284066 -0.12233654 -0.6955824 0… |