R語言 | jiebaR中文分詞包

2021-02-16 大鄧和他的Python
jiebaR

中文與英文做文本分析很多時候會多一個分詞步驟,因為默認情況下,文本分析軟體會默認用空格作為分隔符處理文本,所以很多軟體需要先將中文文本分詞,整理成像英文那樣用空格間隔單詞的數據形式。

在R中有一個jiebaR中文分詞包,可以幫我們做分詞操作~

安裝
install.packages("jiebaR")

分詞

jiebaR::segment(code, jiebar)

jiebar: 老闆segment, 員工是jiebaR包中的worker()函數

對字符串分詞

library(jiebaR)

## Loading required package: jiebaRD

#初始化jiebaR中的worker,將這個工人命名為tokenizer
tokenizer <- worker()

#segment函數僱傭tokenizer幹分詞的活
words <- segment("市長江大橋視察長江大橋", tokenizer)
words

## [1] "市長"     "江大橋"   "視察"     "長江大橋"

worker()

剛剛給segment僱傭的worker時沒有設置工作要求,所以幹的活比較粗糙。現在我們把分詞這個工作細緻化。

worker(
    type = "mix", 
    user = USERPATH,
    stop_word = 
    STOPPATH, 
    topn = 5,
    symbol = F)

type

默認type="mix"

hmm(HMM模型)- 基於 HMM 模型,可以發現詞典中沒有的詞mix(混合模型)- 先用 mp 分,mp 分完調用 hmm 再來把剩餘的可能成詞的單字分出來。

分詞結果帶著詞性

tokenizer <- worker(type='tag')
words <- segment("市長江大橋視察長江大橋", tokenizer)
words

##          n          x          v         ns 
##     "市長"   "江大橋"     "視察" "長江大橋"

user

有時候jiebaR分詞容易把感興趣的詞分成更細粒度的詞,中國大媽這個詞,默認是會被分為中國大媽  兩個詞。例如

tokenizer <- worker()

text <- "在黃金市場上,中國大媽戰勝華爾街金融大鱷"
segment(text, tokenizer)

##  [1] "在"       "黃金市場" "上"       "中國"     "大媽"     "戰勝"    
##  [7] "華爾街"   "金融"     "大"       "鱷"

這時候我們需要把中國大媽加到用戶自定義詞典中,通過詞典告訴worker,凡是遇到中國大媽,一律不許亂分,保持詞語其完整性。

diydict.txt我放到了data文件夾內,每行存放一個詞語。

library(jiebaR)

tokenizer <- worker(user="data/diydict.txt")

text <- "在黃金市場上,中國大媽戰勝華爾街金融大鱷"
segment(text, tokenizer)

## [1] "在"       "黃金市場" "上"       "中國大媽" "戰勝"     "華爾街"   "金融"    
## [8] "大"       "鱷"

symbol

是否保留符號,默認不保留

tokenizer <- worker()

text <- "在黃金市場上,大媽戰勝華爾街金融大鱷!!!"
segment(text, tokenizer)

## [1] "在"       "黃金市場" "上"       "大媽"     "戰勝"     "華爾街"   "金融"    
## [8] "大"       "鱷"

保留符號

tokenizer <- worker(symbol = TRUE)

text <- "在黃金市場上,大媽戰勝華爾街金融大鱷!!!"
segment(text, tokenizer)

##  [1] "在"       "黃金市場" "上"       ","       "大媽"     "戰勝"    
##  [7] "華爾街"   "金融"     "大"       "鱷"       "!"        "!"       
## [13] "!"

相關焦點

  • jiebaR 0.1 發布,R語言中文分詞
    jiebaR是"結巴"中文分詞的R語言版本,支持最大概率法(Maximum Probability),隱式馬爾科夫模型(Hidden
  • R | 教程 jiebaR中文分詞
    導言jiebaR是"結巴"中文分詞的R語言版本,支持最大概率法(Maximum Probability),隱式馬爾科夫模型(Hidden Markov Model),索引模型(QuerySegment),混合模型(MixSegment),共四種分詞模式。本次推送將介紹R中jiebaR程序包關於中文分詞的具體方法。
  • jiebaR 0.3 發布,R語言中文分詞
    jiebaR 中文分詞 0.3 版本發布,此版本更新內容如下: 編譯改進 Bugs 修正
  • R語言怎麼給中文分詞?
    作者:王亨 ,R語言中文社區專欄作者,跟著菜鳥一起一步步學習R語言,爭做R語言高手。
  • 常見中文分詞包比較
    2 snownlpSnowNLP是一個python寫的類庫,可以方便地處理中文文本內容,是受到了TextBlob的啟發而寫的,由於現在大部分的自然語言處理庫基本都是針對英文的,於是寫了一個方便處理中文的類庫,並且和TextBlob不同的是,這裡沒有用NLTK,所有的算法都是自己實現的,並且自帶了一些訓練好的字典
  • NLP快速入門:手把手教你用HanLP做中文分詞
    ,實現中文分詞的工具也越來越多。中文分詞技術作為中文自然語言處理的第一項核心技術,是眾多上層任務的首要基礎工作,同時在日常的工作中起著基礎性的作用。本文將講解如何在Python環境下調用HanLP包進行分詞,並結合Python語言簡約的特性,實現一行代碼完成中文分詞。
  • 為什麼中文分詞比英文分詞更難?有哪些常用算法?(附代碼)
    如在以下例子中,兩種分拆方式代表的語義都有可能:南京市|長江|大橋南京|市長|江大橋為了解決分詞中的歧義性,許多相關算法被提出並在實踐中取得了很好的效果。下面將對中文分詞和英文分詞進行介紹。01 中文分詞在漢語中,句子是單詞的組合。
  • 【NLP】為什麼中文分詞比英文分詞更難?有哪些常用算法?(附代碼)
    如在以下例子中,兩種分拆方式代表的語義都有可能:南京市|長江|大橋南京|市長|江大橋為了解決分詞中的歧義性,許多相關算法被提出並在實踐中取得了很好的效果。下面將對中文分詞和英文分詞進行介紹。01 中文分詞在漢語中,句子是單詞的組合。
  • 使用R語言進行分詞並生成詞雲
    分詞是文本分析中的基礎內容,而詞雲則是基於分詞結果的一種文本可視化方式。本文將介紹基於jiebaR包的基本分詞操作,以及基於wordcloud2包的詞雲製作方法。1 R語言分詞的基本操作在使用R語言進行分詞操作時,常使用的包為jiebaR包,一般會選取其中的worker()分詞器,該分詞器中有多個參數,通過設定可以改變分詞的方式,詞典的使用及輸出方式等,如果均不設定也可按照參數默認值直接使用。
  • 資源 | Python中文分詞工具大合集
    首先介紹之前測試過的8款中文分詞工具,這幾款工具可以直接在AINLP公眾號後臺在線測試,嚴格的說,它們不完全是純粹的中文分詞工具,例如SnowNLP, Thulac, HanLP,LTP,CoreNLP都是很全面的(中文)自然語言處理工具。
  • 人工智慧培訓系列:R語言NLP的中文單詞特徵處理 1
    不過對於中文名義特徵的處理相對比較少。對於中文處理,可以看成有兩方面內容,一個是中文分詞,另外一個就是把一個文檔中的中文詞語做為一個個的特徵轉換為稀舒矩陣處理。文檔轉換為多個特徵對應的稀舒矩陣處理請參考R語言NLP的中文單詞特徵處理 2第一個中文分詞:中文分詞與英文單詞用空格不太一樣。還設計到多個字組成的詞語。
  • 準確率創新高,北大開源中文分詞工具包 pkuseg
    北京大學近日開源了一個全新的中文分詞工具包 pkuseg ,相比於現有的同類開源工具,pkuseg 大幅提高了分詞的準確率。
  • 韋編 | HanLP——面向中文的自然語言處理常用工具包
    一款名為HanLP,中文友好、上手簡單的自然語言處理工具包映入眼前,特此分享給大家,新手友好~HanLP是一款由一系列模型與算法組成的Java工具包,目標是普及自然語言處理在生產環境中的應用。HanLP具備功能完善、性能高效、架構清晰、語料時新、可自定義的特點,希望兼顧學術界的精準與工業界的效率,真正將自然語言處理普及到生產環境中去。其基本功能有:中文分詞  詞性標註  命名實體識別  依存句法分析  關鍵詞提取  新詞發現  短語提取  自動摘要  文本分類  拼音簡繁  文本推薦  情感分析  word2vec 文本聚類等。
  • NLP的中文分詞面試指南
    自然語言理解理想是美好的,但現實是殘酷的。由於入門NLP的技術門檻很高,因此勸退了很多新人。在NLP領域裡,中文分詞對於處在中文語言環境的我們來說,是基礎中的基礎,核心中的核心,涉及到的知識點覆蓋面很廣。所以很多關於NLP的面試中都會問到中文分詞的問題,很多NLP任務都依賴中文分詞的結果,同時中文分詞所使用的技術可以很好的應用到其它領域,比如:語音識別、實體識別等等。
  • 【分詞】中文分詞的古今中外,你想知道的都在這裡
    分詞(word tokenization),也叫切詞,即通過某種方式將句子中的各個詞語識別並分離開來,使得文本從「字序列」的表示升級為「詞序列」表示。分詞技術不僅僅適用於中文,對於英文、日文、韓文等語言也同樣適用。
  • 用TensorFlow構建一個中文分詞模型需要幾個步驟
    中文分詞方法現在主要有兩種類型,一種是jieba這樣軟體包中用隱馬爾科夫(HMM)模型構建的。這裡面我們主要以後者為參考。中文分詞往往有兩個直接目標,一個是把詞彙分開,另一個給每個詞以詞性,例如動詞、名詞,或者更細分的地點名詞、機構名詞等等。如果只是分詞,是中文分詞任務(SEG,Chinese Segmentation),如果需要詞性,也可以被稱為詞性標註任務(POS,Part os Speech)任務。
  • Python中文分詞工具大合集:安裝、使用和測試
    首先介紹之前測試過的8款中文分詞工具,這幾款工具可以直接在AINLP公眾號後臺在線測試,嚴格的說,它們不完全是純粹的中文分詞工具,例如SnowNLP, Thulac, HanLP,LTP,CoreNLP都是很全面的(中文)自然語言處理工具。
  • 人工智慧培訓系列:R語言NLP的中文處理2
    第二個問題是,把分詞的結果轉換成稀舒矩陣的特徵列。以方便各種機器學習算法訓練。tm包與SnowballC 結合的DocumentTermMatrix函數對於英文處理不錯。但是中文就始終些問題。因此需要對DocumentTermMatrix做額外的參數處理。
  • 探索小米開源分詞MiNLP基於深度學習的分詞工作
    https://github.com/XiaoMi/MiNLP大家可以star + fork小米自然語言處理平臺(MiNLP
  • 分詞|Python最好的中文分詞庫
    jieba庫最出名的功能就是中文分詞,在jieba中提供了三種常用的分詞模式:精確模式:將句子按照最精確的方法進行切分,適合用於進行文本分析;全模式:將句子當中所有可以成詞的詞語都掃描出來,分詞速度很快但容易產生歧義;搜尋引擎模式:在精確模式分詞的基礎上,將長的句子再次進行切分,提高召回率,適用於搜尋引擎的分詞。