原来nutch 的分词是用javacc的,它是一个很高效的东东哦。
对于中日韩的文字是用单字分词,
所以对中文要分词,思路当然是把中文拿出来单独对待了。
所以要对analysis.jj进行修改。
// chinese, japanese and korean characters
| <SIGRAM: <OTHER_CJK>>
| <CNWORD: (<CHINESE>)+>//chinese word
// irregular words
| <#IRREGULAR_WORD: (<C_PLUS_PLUS>|<C_SHARP>)>
| <#C_PLUS_PLUS: ("C"|"c") "++" >
| <#C_SHARP: ("C"|"c") "#" >
// query syntax characters
| <PLUS: "+" >
| <MINUS: "-" >
| <QUOTE: "/"" >
| <COLON: ":" >
| <SLASH: "/" >
| <DOT: "." >
| <ATSIGN: "@" >
| <APOSTROPHE: "'" >
| <WHITE: ~[] > // treat unrecognized chars
// as whitespace
// primitive, non-token patterns
| <#WORD_PUNCT: ("_"|"&")> // allowed anywhere in words
| < #LETTER: // alphabets
[
"/u0041"-"/u005a",
"/u0061"-"/u007a",
"/u00c0"-"/u00d6",
"/u00d8"-"/u00f6",
"/u00f8"-"/u00ff",
"/u0100"-"/u1fff"
]
>
| <#OTHER_CJK: //japanese and korean characters // non-alphabets
[
"/u3040"-"/u318f",
"/u3300"-"/u337f",
"/u3400"-"/u3d2d",
"/uf900"-"/ufaff"
]
>
| <#CHINESE://chinese characters
[
"/u4e00"-"/u9fff"
]
>
| <#DIGIT: // unicode digits
[
"/u0030"-"/u0039",
"/u0660"-"/u0669",
"/u06f0"-"/u06f9",
"/u0966"-"/u096f",
"/u09e6"-"/u09ef",
"/u0a66"-"/u0a6f",
"/u0ae6"-"/u0aef",
"/u0b66"-"/u0b6f",
"/u0be7"-"/u0bef",
"/u0c66"-"/u0c6f",
"/u0ce6"-"/u0cef",
"/u0d66"-"/u0d6f",
"/u0e50"-"/u0e59",
"/u0ed0"-"/u0ed9",
"/u1040"-"/u1049"
]
>
}
这样,就把中文单独拿出来处理了,
后面就是要用自己的中文分词方法对它进行处理了。
处理分词是nutchAnalysis.java中的parse()方法,改它就可以了。
对于中日韩的文字是用单字分词,
所以对中文要分词,思路当然是把中文拿出来单独对待了。
所以要对analysis.jj进行修改。
// chinese, japanese and korean characters
| <SIGRAM: <OTHER_CJK>>
| <CNWORD: (<CHINESE>)+>//chinese word
// irregular words
| <#IRREGULAR_WORD: (<C_PLUS_PLUS>|<C_SHARP>)>
| <#C_PLUS_PLUS: ("C"|"c") "++" >
| <#C_SHARP: ("C"|"c") "#" >
// query syntax characters
| <PLUS: "+" >
| <MINUS: "-" >
| <QUOTE: "/"" >
| <COLON: ":" >
| <SLASH: "/" >
| <DOT: "." >
| <ATSIGN: "@" >
| <APOSTROPHE: "'" >
| <WHITE: ~[] > // treat unrecognized chars
// as whitespace
// primitive, non-token patterns
| <#WORD_PUNCT: ("_"|"&")> // allowed anywhere in words
| < #LETTER: // alphabets
[
"/u0041"-"/u005a",
"/u0061"-"/u007a",
"/u00c0"-"/u00d6",
"/u00d8"-"/u00f6",
"/u00f8"-"/u00ff",
"/u0100"-"/u1fff"
]
>
| <#OTHER_CJK: //japanese and korean characters // non-alphabets
[
"/u3040"-"/u318f",
"/u3300"-"/u337f",
"/u3400"-"/u3d2d",
"/uf900"-"/ufaff"
]
>
| <#CHINESE://chinese characters
[
"/u4e00"-"/u9fff"
]
>
| <#DIGIT: // unicode digits
[
"/u0030"-"/u0039",
"/u0660"-"/u0669",
"/u06f0"-"/u06f9",
"/u0966"-"/u096f",
"/u09e6"-"/u09ef",
"/u0a66"-"/u0a6f",
"/u0ae6"-"/u0aef",
"/u0b66"-"/u0b6f",
"/u0be7"-"/u0bef",
"/u0c66"-"/u0c6f",
"/u0ce6"-"/u0cef",
"/u0d66"-"/u0d6f",
"/u0e50"-"/u0e59",
"/u0ed0"-"/u0ed9",
"/u1040"-"/u1049"
]
>
}
这样,就把中文单独拿出来处理了,
后面就是要用自己的中文分词方法对它进行处理了。
处理分词是nutchAnalysis.java中的parse()方法,改它就可以了。