Skip to Content

上篇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中是否有支持中文。如下图所示,看到有支持简体中文的一项则确认没有问题。

/wp-content/uploads/2014/02/1_398576.png

     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";



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

/wp-content/uploads/2014/02/2_398577.png

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

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


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


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

/wp-content/uploads/2014/02/3_398578.png


分词表不仅将中文文章分解成一个个单词,并且还为每个单词标识了词性。例如“获取”标识了动词,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!我们欢迎你的加入!

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply