hive UDF 提取文本中的地名

本文介绍了如何在Hive中开发一个UDF,利用HanLP库有效地从文本字符串中提取地名,以增强HIVE在文本分析中的功能。

有时候,需要从文本字符串提取出地区名,为了在HIVE中使用方便,开发了一个HIVE UDF,核心在于使用了hanLP这样一个中文文本处理的神器。详细代码如下:



import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.seg.Segment;
import com.hankcs.hanlp.seg.common.Term;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;


public class placeExtract extends UDF{
    public Text evaluate(Text inputStr){
        if(inputStr == null) return null;
        Text result = new Text();

        Segment segment = HanLP.newSegment().enablePlaceRecognize(true);
        List<Term> termList = segment.seg(inputStr.toString());
        StringBuilder places = new StringBuilder();
        for(int i=0; i< termList.size(); i++){
            String s = termList.get(i).toString();
            if(Pattern.matches(".*/ns$",s)){
                places.append(s.replace("/ns",""));
                place
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值