Hanlp分詞1.7版本在Spark中分散式使用記錄
新發布 1.7.0版本的hanlp自然語言處理工具包差不多已經有半年時間了,最近也是一直在整理這個新版本hanlp分詞工具的相關內容。不過按照當前的整理進度,還需要一段時間再給大家詳細分享整理的內容。昨天正好看到的這篇關於關於1.7.0版本hanlp分詞在spark中的使用介紹的文章,順便分享給大家一起學習一下!
以下為分享的文章內容:
HanLP分詞,如README中所說,如果沒有特殊需求,可以透過maven配置,如果要新增自定義詞典,需要下載“依賴jar包和使用者字典".
直接 "java xf hanlp-1.6.8-sources.jar" 解壓原始碼,把原始碼加入工程(依賴本地jar包,有些麻煩,有時候到伺服器有找不到jar包的情況)
按照文件操作,在 Spark中分詞,預設找的是本地目錄,所以如果是在driver中分詞是沒有問題的。但是如果要分散式分詞,是要把詞典目錄放在HDFS上面,因為這樣每臺機器才可以訪問到 【參考程式碼】
最好把新增詞典放在首位 , 第一次使用時 ,HanLP會把新增txt檔案,生成bin檔案,這個過程比較慢。但是隻需要跑一次,它會把bin檔案寫到HDFS路徑上面,第二次以後速度就快一些了。
注意到 issue中說,只可以在mapPartition中使用 。
參考 scala程式碼
class HadoopFileIoAdapter extends IIOAdapter {
override def create(path: String): java.io.OutputStream = {
val conf: Configuration = new Configuration()
val fs: FileSystem = FileSystem.get(URI.create(path), conf)
fs.create(new Path(path))
}
override def open(path: String): java.io.InputStream = {
val conf: Configuration = new Configuration()
val fs: FileSystem = FileSystem.get(URI.create(path), conf)
fs.open(new Path(path))
}
}
def myfuncPerPartition_ ( iter : Iterator [String] ) : Iterator[(Int, mutable.Buffer[String])] = {
println("run in partition")
val keyWordNum = 6
HanLP.Config.IOAdapter = new HadoopFileIoAdapter
val ret = iter.filter(_.split(",",2).length==2)
.map(line=>(line.split(",",2)(1).trim.hashCode, HanLP.extractKeyword(line.split(",",2)(0),keyWordNum)
.map(str=>str.filterNot(stopChar.contains(_))).filter(w=>(w.length>1 || ( w.length==1 && white_single_word.contains(w(0))) ))
.filterNot(stopWords.contains(_)).take(keyWordNum).distinct))
ret
}
//呼叫
raw_data.repartition(100).mapPartitions(myfuncPerPartition_)
---------------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2638053/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spark中分散式使用HanLP(1.7.0)分詞示例Spark分散式HanLP分詞
- Hanlp在java中文分詞中的使用介紹HanLPJava中文分詞
- HanLP分詞工具中的ViterbiSegment分詞流程HanLP分詞Viterbi
- python呼叫hanlp分詞包手記PythonHanLP分詞
- Elasticsearch整合HanLP分詞器ElasticsearchHanLP分詞
- Hanlp中使用純JAVA實現CRF分詞HanLPJavaCRF分詞
- HanLP-實詞分詞器詳解HanLP分詞
- Hanlp1.7版本的新增功能一覽HanLP
- Spring MVCD框架中呼叫HanLP分詞的方法SpringMVC框架HanLP分詞
- HanLP中文分詞Lucene外掛HanLP中文分詞
- java分詞工具hanlp介紹Java分詞HanLP
- 分詞工具Hanlp基於感知機的中文分詞框架HanLP中文分詞框架
- NLP入門學習中關於分詞庫HanLP匯入使用教程分詞HanLP
- Ansj與hanlp分詞工具對比HanLP分詞
- HanLP分類模組的分詞器介紹HanLP分詞
- Hanlp分詞之CRF中文詞法分析詳解HanLP分詞CRF詞法分析
- NLP自然語言處理中的hanlp分詞例項自然語言處理HanLP分詞
- 基於hanlp的es分詞外掛HanLP分詞
- HanLP分詞命名實體提取詳解HanLP分詞
- 在Python中呼叫Java擴充套件包HanLP測試記錄PythonJava套件HanLP
- 基於 HanLP 的 ES 中文分詞外掛HanLP中文分詞
- HanLP-停用詞表的使用示例HanLP
- 分散式學習記錄分散式
- 中文分詞演算法工具hanlp原始碼解析中文分詞演算法HanLP原始碼
- HanLP程式碼與詞典分離方案與流程HanLP
- Hanlp在ubuntu中的使用方法介紹HanLPUbuntu
- 分散式版本控制工具 Mercurial 使用分散式
- Spark記錄(一):Spark全景概述Spark
- hanlp中文智慧分詞自動識別文字提取例項HanLP分詞
- Hanlp分詞例項:Java實現TFIDF演算法HanLP分詞Java演算法
- hanlp原始碼解析之中文分詞演算法詳解HanLP原始碼中文分詞演算法
- ElasticSearch5.0+版本分詞熱更新實踐記錄ElasticsearchH5分詞
- Spark SQL scala和java版本的UDF函式使用SparkSQLJava函式
- IKAnalyzer 中文分詞的不同版本切詞方式中文分詞
- 在 Maven 專案中使用 HanLPMavenHanLP
- hadoop+spark偽分散式HadoopSpark分散式
- 開源自然語言處理工具包hanlp中CRF分詞實現詳解自然語言處理HanLPCRF分詞
- 自然語言處理工具HanLP-N最短路徑分詞自然語言處理HanLP分詞