国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

中文分詞和TF-IDF

2019-11-17 04:11:54
字體:
來源:轉載
供稿:網友

  中文分詞(Chinese Word Segmentation)指的是將一個漢字序列切分成一個一個單獨的詞。中文分詞是文本挖掘的基礎,對于輸入的一段中文,成功的進行中文分詞,可以達到電腦自動識別語句含義的效果。

  TF-IDF(term frequency–inverse document frequency)是一種用于信息搜索和信息挖掘的常用加權技術。在搜索、文獻分類和其他相關領域有廣泛的應用。

  TF-IDF的主要思想是,如果某個詞或短語在一篇文章中出現的頻率TF高,并且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。TF詞頻(Term Frequency)指的是某一個給定的詞語在該文件中出現的次數。IDF反文檔頻率(Inverse Document Frequency)的主要思想是:如果包含詞條的文檔越少,IDF越大,則說明詞條具有很好的類別區分能力。

  使用TF*IDF可以計算某個關鍵字在某篇文章里面的重要性,因而識別這篇文章的主要含義,實現計算機讀懂文章的功能。

  常見中文分詞開源項目:

  SCWS:

  Hightman開發的一套基于詞頻詞典的機械中文分詞引擎,它能將一整段的漢字基本正確的切分成詞。采用的是采集的詞頻詞典,并輔以一定的專有名稱,人名,地名,數字年代等規則識別來達到基本分詞,經小范圍測試大概準確率在 90% ~ 95% 之間,已能基本滿足一些小型搜索引擎、關鍵字提取等場合運用。45Kb左右的文本切詞時間是0.026秒,大概是1.5MB文本/秒,支持php4和PHP 5。

  ICTCLAS:  

  這可是最早的中文開源分詞項目之一,ICTCLAS在國內973專家組組織的評測中活動獲得了第一名,在第一屆國際中文處理研究機構SigHan組織的評測中都獲得了多項第一名。ICTCLAS3.0分詞速度單機996KB/s,分詞精度98.45%,API不超過200KB,各種詞典數據壓縮后不到3M.ICTCLAS全部采用C/C++編寫,支持linux、FreeBSD及Windows系列操作系統,支持C/C++、C#、Delphi、java等主流的開發語言。

  庖丁解牛分詞:

  Java 提供lucence 接口,僅支持Java語言。

  CC-CEDICT:

  一個中文詞典開源項目,提供一份以漢語拼音為中文輔助的漢英辭典,截至2009年2月8日,已收錄82712個單詞。其詞典可以用于中文分詞使用,而且不存在版權問題。Chrome中文版就是使用的這個詞典進行中文分詞的。

  基于VB/asp的中文分詞

  上面的開源項目沒有給予VB和ASP的,這里提供一個簡單的VB/ASP類,加上詞典之后就可以進行分詞了,注意這個類只供演示,其分詞速度極慢不適合實際應用。

  類名為:WordSplit

PRivate rootTable As String
http://bizhi.VeVb.com/
Private Function GetCount(ByVal s As String) As Long
    GetCount = InStr(1, rootTable, s)
End Function

Public Function WordCount(ByVal strString As String, ByVal strGetWord As String) As Long
    Dim k
    k = Split(strString, strGetWord)
    WordCount = UBound(k)
End Function


' 分析輸入的字符串,將其切割成一個個的詞語。
' <param name="s">待切割的字符串</param>
' <returns>所切割得到的中文詞語數組</returns>

Public Function ParseChinese(ByVal s As String, ByVal separator As String) As String
    Dim lngLength As Long
    Dim strTemp As String
    Dim ArrayList As String
    Dim i, j

    ArrayList = ""
    lngLength = Len(s)
    i = 1
    While i < lngLength
        strTemp = Mid(s, i, 1)
        If GetCount(strTemp) > 1 Then
            j = 2
            While i + j < lngLength + 1 And GetCount(Mid(s, i, j)) > 0
                j = j + 1
            Wend
            strTemp = Mid(s, i, j - 1)
            i = i + j - 2
        End If
        i = i + 1
        'WordAdd (temp)
        ArrayList = ArrayList + strTemp + separator
    Wend
    ParseChinese = ArrayList

End Function

Private Sub Class_Initialize()
    Dim fso, templetfile, txtfile
    templetfile = App.Path + "/ChineseDictionary.txt"
    Set fso = CreateObject("Scr    Set txtfile = fso.OpenTextFile(templetfile, 1)
    rootTable = txtfile.ReadAll
    txtfile.Close
End Sub

  調用示例:

    strInput = "中文分詞指的是將一個漢字序列切分成一個一個單獨的詞。中文分詞是文本挖掘的基礎,對于輸入的一段中文,成功的進行中文分詞,可以達到電腦自動識別語句含義的效果。"
    Dim strWordSplit As New WordSplit
    strSubject = strWordSplit.ParseChinese(strInput, "|")
    arrSubject = Split(strSubject, "|")

轉載自月光博客 [ http://www.williamlong.info/ ]


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 确山县| 海原县| 溆浦县| 沾化县| 龙海市| 孝感市| 永福县| 乳山市| 江山市| 井研县| 宝应县| 永善县| 咸丰县| 聂荣县| 云浮市| 黄梅县| 昌宁县| 监利县| 天全县| 井研县| 铁岭市| 金溪县| 建宁县| 阿城市| 香港| 桐城市| 绥芬河市| 乌兰浩特市| 昌都县| 阿拉善盟| 阿坝县| 金昌市| 伊春市| 衢州市| 朝阳市| 盐边县| 常山县| 那坡县| 涞水县| 九江县| 泽州县|