上篇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_TEST的CONTENT列上建立全文索引,如下所示:
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!我们欢迎你的加入!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
11 | |
11 | |
11 | |
10 | |
9 | |
7 | |
6 | |
5 | |
5 | |
5 |