Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member

上篇blog中我们通过RLANG的方式,实现了抓取网页的内容,并且提取了正文内容。接下来我将会介绍下如何使用SAP HANA实现中文分词。

    1.  SAP HANA中文分词简单介绍

SAP HANA分词属于SAP HANA文本分析的一部分。我们可以通过创建全文索引的方式来实现SAP HANA分词功能。SAP HANA文本分析支持以下7种数据类型:TEXT, BINTEXT, NVARCHAR, VARCHAR, NCLOB, CLOB,and BLOB。你可以根据不同的应用需求选择不同的数据类型。

为了使用SAP HANA 实现中文分词,我们首先确认你安装的SAP HANA中是否有支持中文。如下图所示,看到有支持简体中文的一项则确认没有问题。

     1. 测试

我们先创建一个用来测试的数据库表。


CREATE COLUMN TABLE SEGMENTATION_TEST(
  URL VARCHAR(200) PRIMARY KEY,
  CONTENT NCLOB,
  LANGU VARCHAR(10)
);



    其中CONTENT列是存储需要分词的文本。而LANGU列则指定了分词所使用的语言集,默认为EN,我们这里需要设置为ZH。

然后我们在刚创建的表SEGMENTATION_TESTCONTENT列上建立全文索引,如下所示:


CREATE FULLTEXT INDEX FT_INDEX
ON SEGMENTATION_TEST(CONTENT) TEXT ANALYSIS
ON CONFIGURATION 'LINGANALYSIS_FULL'
LANGUAGE COLUMN "LANGU";



    注意需要创建全文索引的表必须含有主键,否则会报错,如下图所示:

创建全文索引后,SAP HANA会自动生成一张以$TA_<index_name>为名称的表。

我们向表SEGMENTATION_TEST插入一条数据:


INSERT INTO SEGMENTATION_TEST(URL,CONTENT,LANGU)
VALUES('http://xxx.xxx.xxx','想获取更多SAP HANA学习资料或有任何疑问,请关注新浪微博@HANAGeek!我们欢迎你的加入!','ZH');


   然后就可以查看到分词的结果了:


分词表不仅将中文文章分解成一个个单词,并且还为每个单词标识了词性。例如“获取”标识了动词,HANA为未知词性,标识了未知。当然对于HANA和SAP这种系统词典没有的词,我们可以通过自定义词典的方式进行标注。分词表的每个列的具体含义请见              

http://help.sap.com/hana/SAP_HANA_Developer_Guide_en.pdf

   SAP HANA提供了多重配置方式:LINGANALYSIS_BASIC,LINGANALYSIS_BASIC,LINGANALYSIS_BASIC,EXTRACTION_CORE,EXTRACTION_CORE。

LINGANALYSIS_BASIC:只提供分词功能,没有对单词的词性标注。

LINGANALYSIS_STEMS:提供了分词和词干识别功能。

LINGANALYSIS_FULL:提供了分词、词干识别以及词性标注功能。

EXTRACTION_CORE:该配置负责抽取文本中的感兴趣实体部分,例如组织,场所等。

EXTRACTION_CORE_VOICEOFCUSTOMER:你可以使用它获取关于用户需求和理念的特殊信息,例如可以做文本情感分析。该配置项包括,复杂的语言分析和模式处理,包括拼写、句法模式、否定等处理。

我们可以根据不同的需求选取不同的配置项,本文选用的是LINGANALYSIS_FULL。

为了能够在删除原表数据的同时删除分词表,我们需要将两张表的主键关联起来。可以使用下面的SQL语句 :


ALTER TABLE TEST."$TA_FT_INDEX" ADD CONSTRAINT R_KEY FOREIGN
KEY(URL) REFERENCES TEST.SEGMENTATION_TEST(URL) ON DELETE CASCADE;


本文的测试案例所使用的SAP HANA版本为SAP HANA SP07 Revision 70.00


想获取更多SAP HANA学习资料或有任何疑问,请关注新浪微博@HANAGeek!我们欢迎你的加入!