分詞演算法
Ⅰ 中文分詞中正向最大匹配演算法的分詞速度是多少准確率大概為多少
主要看你的詞表結構了,最大詞長的初始值,查詞典的次數和匹配的次數,然後得出時間復雜度,原始hash演算法復雜度沒記錯的話應該是2.89,11年看過一個文獻,提出一種改進的演算法時間復雜度是2.291……
另外,分詞演算法並不是原封不動的,比如有些搜索引擎的詞表結構就採用tire樹結構,這樣不用設置最大詞長,不過內存空間方面就要有取捨,甚至還有採用減少查典次數增加匹配次數的搜索引擎……
所以單純的給你一個189.3m/M純內存分詞速度,但是這演算法換個台更高配置的伺服器卻變成了497.6ms/M,這沒有任何意義……
記得哪個文獻上有人說,分詞本身不是目的,而是後續處理過程的必要階段,所以,除非你是研究演算法的,否則單純追求這東西的速度和准確率沒什麼太大意義
Ⅱ 請教基於統計的分詞演算法和程序
分詞演算法我寫過,可以把中文文章裡面的詞語都智能分離出來,但恐怕你所說的找固定片語是指查找片語么?那應該是查找演算法,並不屬於分詞的范疇,難度低很多很多,只是查找字元串而已。我對積分沒興趣的,只對錢有興趣,願意消費的才聯系,看ID
Ⅲ n-gram中文分詞演算法怎麼算
主要看你的詞表結構了,最大詞長的初始值,查詞典的次數和匹配的次數,然後得出時間復雜度,原始hash演算法復雜度沒記錯的話應該是2.89,11年看過一個文獻,提出一種改進的演算法時間復雜度是2.291…… 另外,分詞演算法並不是原封不動的,比如有些搜索。
Ⅳ 關鍵詞的分詞演算法是一個演算法么還是具體需要指出運用那種演算法呢
分詞演算法是個大類,有許多具體演算法的.
Ⅳ java中文分詞演算法
這兩天正好在玩lucene,沒用庖丁分詞,主要是嫌它要配置環境,麻煩
下面是demo,記得要加lucene-core-2.3.2.jar和lucene-Analyzer.jar以及IKAnalyzer.jar這幾個包,有問題call我
import java.io.Reader;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.StopFilter;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.mira.lucene.analysis.IK_CAnalyzer;
public class TestJeAnalyzer {
private static String testString1 = "冗長的代碼常常是復雜性的標志,會導致代碼難以測試和維護.";
public static void testStandard(String testString) throws Exception{
Analyzer analyzer = new StandardAnalyzer();
Reader r = new StringReader(testString);
StopFilter sf = (StopFilter) analyzer.tokenStream("", r);
System.err.println("=====standard analyzer====");
System.err.println("分析方法:默認沒有詞只有字");
Token t;
while ((t = sf.next()) != null) {
System.out.println(t.termText());
}
}
public static void testCJK(String testString) throws Exception{
Analyzer analyzer = new CJKAnalyzer();
Reader r = new StringReader(testString);
StopFilter sf = (StopFilter) analyzer.tokenStream("", r);
System.err.println("=====cjk analyzer====");
System.err.println("分析方法:交叉雙字分割");
Token t;
while ((t = sf.next()) != null) {
System.out.println(t.termText());
}
}
public static void testChiniese(String testString) throws Exception{
Analyzer analyzer = new ChineseAnalyzer();
Reader r = new StringReader(testString);
TokenFilter tf = (TokenFilter) analyzer.tokenStream("", r);
System.err.println("=====chinese analyzer====");
System.err.println("分析方法:基本等同StandardAnalyzer");
Token t;
while ((t = tf.next()) != null) {
System.out.println(t.termText());
}
}
public static void testJe(String testString) throws Exception{
// Analyzer analyzer = new MIK_CAnalyzer();
Analyzer analyzer = new IK_CAnalyzer();
Reader r = new StringReader(testString);
TokenStream ts = (TokenStream)analyzer.tokenStream("", r);
System.err.println("=====je analyzer====");
System.err.println("分析方法:字典分詞,正反雙向搜索,具體不明");
Token t;
while ((t = ts.next()) != null) {
System.out.println(t.termText());
}
}
public static void main(String[] args) throws Exception{
// String testString = testString1;
String testString = testString1;
System.out.println(testString);
testStandard(testString);
testCJK(testString);
// testPaoding(testString);
testChiniese(testString);
testJe(testString);
}
}
Ⅵ 關於中科院分詞演算法的問題
AB
Ⅶ 分詞演算法事什麼
分詞演算法是文本挖掘的基礎,通常對整個模型的效果起著較大的決定作用。
分詞演算法常用的兩種運行方式:
1、用戶搜索及匹配。
例如:我們在網路搜索一個詞 「手機回收」,那麼網路會先把這個詞分為手機和回收兩個詞這個時候呢網路會先在庫中搜索手機這個詞然後進行第一輪的篩選。把網頁當中沒有手機這個詞的去除,只保留帶有手機這個詞的結果,之後再從已篩選出來的網頁中,篩選出帶有回收這個詞的頁面。然後在所得結果裡面根據頁面評分給用戶進行排序。
2、網頁主題計算。
前面啟蒙博客也講過,網路蜘蛛只是一個機器,並不能向人一樣去思考,而在處理文章的時候,網路蜘蛛則會把文章也進行分詞去處理,如過文章里 手機 這個詞出現頻率比較多,也就是所說的關鍵詞密度,那麼這個頁面也就會定性為手機方面的文章。
Ⅷ 漢語分詞演算法如何實現
常用的分詞演算法有正向最大匹配、逆向最大匹配、雙向最大匹配、最佳匹配法、最少分詞法、詞網格演算法等等。
最大匹配法(Forward Maximum Matching method, FMM法):選取包含6-8個漢字的符號串作為最大符號串,把最大符號串與詞典中的單詞條目相匹配,如果不能匹配,就削掉一個漢字繼續匹配,直到在詞典中找到相應的單詞為止。匹配的方向是從右向左。
逆向最大匹配法(Backward Maximum Matching method, BMM法):匹配方向與MM法相反,是從左向右。實驗表明:對於漢語來說,逆向最大匹配法比最大匹配法更有效。
雙向匹配法(Bi-direction Matching method, BM法):比較MM法與RMM法的切分結果,從而決定正確的切分。
最佳匹配法(Optimum Matching method, OM法):將詞典中的單詞按它們在文本中的出現頻度的大小排列,高頻度的單詞排在前,頻度低的單詞排在後,從而提高匹配的速度。
Ⅸ 百度的中文分詞演算法
這是seo裡面非常重要的知識,競價人員必須掌握的。關於資料這方面的資料有很多,學習起來最重要的是靈活,活用活用,融會貫通,舉一反三。
Ⅹ 分詞演算法的分類實現
1:
public class T1{
private int i;
public void func(){
for ( i = 10; i<50; i++ ){
if( i%3 == 0 ){
System.out.print( i + " " );
}
}
System.out.println();
}
public static void main( String args[] ){
T1 t1 = new T1();
t1.func();
}
}
2.
public class T2{
private int i = 10;
public void func(){
while ( i<50){
if( i%3 == 0 ){
System.out.print( i + " " );
}
i++;
}
System.out.println();
}
public static void main( String args[] ){
T2 t2 = new T2();
t2.func();
}
}
3.
public class T3{
private int i = 10;
public void func(){
do{
if( i%3 == 0 ){
System.out.print( i + " " );
}
i++;
}
while( i < 50 );
System.out.println();
}
public static void main( String args[] ){
T3 t3 = new T3();
t3.func();
}
}