⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linguisticanalyzer.java

📁 spam source codejasen-0.9jASEN - java Anti Spam ENgine.zip 如标题所示
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * Copyright (c) 2004, 2005  jASEN.org
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   1. Redistributions of source code must retain the above copyright notice,
 *      this list of conditions and the following disclaimer.
 *
 *   2. Redistributions in binary form must reproduce the above copyright
 *      notice, this list of conditions and the following disclaimer in
 *      the documentation and/or other materials provided with the distribution.
 *
 *   3. The names of the authors may not be used to endorse or promote products
 *      derived from this software without specific prior written permission.
 *
 *   4. Any modification or additions to the software must be contributed back
 *      to the project.
 *
 *   5. Any investigation or reverse engineering of source code or binary to
 *      enable emails to bypass the filters, and hence inflict spam and or viruses
 *      onto users who use or do not use jASEN could subject the perpetrator to
 *      criminal and or civil liability.
 *
 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JASEN.ORG,
 * OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */
package org.jasen.core.linguistics;

import java.io.IOException;
import java.util.Arrays;

/**
 * <P>
 * Singleton linguistic analyzer class used to determine if a word is valid	.
 * </P>
 * @author Jason Polites
 */
public final class LinguisticAnalyzer {

	private static LinguisticAnalyzer instance;
	private static final Object lock = new Object();

	private LexicalTreeAnalyzer analyzer;

	public static final double DEFAULT_THRESHOLD = 0.1d;

	private LinguisticAnalyzer() {}

	// Certain extended characters have logical replacements
	// Spammers will often use extended ascii characters in replace
	// of normal chars
	public static char[] STANDARD_UNICODE_SEARCH = {
		0x0021, // ! == i
		0x0024, // $ == s
		0x0031, // 1 == i
		0x0040 // @ == a
	};

	public static char[] STANDARD_UNICODE_REPLACE = {
		0x0069, // i
		0x0073, // s
		0x0069, // i
		0x0061 // a
	};


	public static char[] EXTENDED_UNICODE_SEARCH = {
		0x00A1, // i
		0x00A2, // c
		0x00A5, // y
		0x00A9, // c
		0x00AA, // a
		0x00AE, // r
		0x00B5, // u
		0x00C0, // A
		0x00C1, // A
		0x00C2, // A
		0x00C3, // A
		0x00C4, // A
		0x00C5, // A
		0x00C7, // C
		0x00C8, // E
		0x00C9, // E
		0x00CA, // E
		0x00CB, // E
		0x00CC, // I
		0x00CD, // I
		0x00CE, // I
		0x00CF, // I
		0x00D0, // D
		0x00D1, // N
		0x00D2, // O
		0x00D3, // O
		0x00D4, // O
		0x00D5, // O
		0x00D6, // O
		0x00D7, // x
		0x00D8, // O
		0x00D9, // U
		0x00DA, // U
		0x00DB, // U
		0x00DC, // U
		0x00DD, // Y
		0x00DE, // p
		0x00DF, // B
		0x00E0, // a
		0x00E1, // a
		0x00E2, // a
		0x00E3, // a
		0x00E4, // a
		0x00E5, // a
		0x00E6, // a
		0x00E7, // c
		0x00E8, // e
		0x00E9, // e
		0x00EA, // e
		0x00EB, // e
		0x00EC, // i
		0x00ED, // i
		0x00EE, // i
		0x00EF, // i
		0x00F0, // o
		0x00F1, // n
		0x00F2, // o
		0x00F3, // o
		0x00F4, // o
		0x00F5, // o
		0x00F6, // o
		0x00F8, // o
		0x00F9, // u
		0x00FA, // u
		0x00FB, // u
		0x00FC, // u
		0x00FD, // y
		0x00FE, // p
		0x00FF, // y

		0x0100, // A
		0x0101, // a
		0x0102, // A
		0x0103, // a
		0x0104, // A
		0x0105, // a
		0x0106, // C
		0x0107, // c
		0x0108, // C
		0x0109, // c
		0x010A, // C
		0x010B, // c
		0x010C, // C
		0x010D, // c
		0x010E, // D
		0x010F, // d
		0x0110, // D
		0x0111, // d
		0x0112, // E
		0x0113, // e
		0x0114, // E
		0x0115, // e
		0x0116, // E
		0x0117, // e
		0x0118, // E
		0x0119, // e
		0x011A, // E
		0x011B, // e
		0x011C, // G
		0x011D, // g
		0x011E, // G
		0x011F, // g
		0x0120, // G
		0x0121, // g
		0x0122, // G
		0x0123, // g
		0x0124, // H
		0x0125, // h
		0x0126, // H
		0x0127, // h
		0x0128, // I
		0x0129, // i
		0x012A, // I
		0x012B, // i
		0x012C, // I
		0x012D, // i
		0x012E, // I
		0x012F, // i
		0x0130, // I
		0x0131, // i
		//0x0132, // IJ
		//0x0133, // ij
		0x0134, // J
		0x0135, // j
		0x0136, // K
		0x0137, // k
		0x0138, // K
		0x0139, // L
		0x013A, // l
		0x013B, // L
		0x013C, // l
		0x013D, // L
		0x013E, // l
		0x013F, // L
		0x0140, // l
		0x0141, // L
		0x0142, // l
		0x0143, // N
		0x0144, // n
		0x0145, // N
		0x0146, // n
		0x0147, // N
		0x0148, // n
		0x0149, // n
		0x014A, // N
		0x014B, // n
		0x014C, // O
		0x014D, // o
		0x014E, // O
		0x014F, // o
		0x0150, // O
		0x0151, // o
		//0x0152, // OE
		//0x0153, // oe
		0x0154, // R
		0x0155, // r
		0x0156, // R
		0x0157, // r
		0x0158, // R
		0x0159, // r
		0x015A, // S
		0x015B, // s
		0x015C, // S
		0x015D, // s
		0x015E, // S
		0x015F, // s
		0x0160, // S
		0x0161, // s
		0x0162, // T
		0x0163, // t
		0x0164, // T
		0x0165, // t
		0x0166, // T
		0x0167, // t
		0x0168, // U
		0x0169, // u
		0x016A, // U
		0x016B, // u
		0x016C, // U
		0x016D, // u
		0x016E, // U
		0x016F, // u
		0x0170, // U
		0x0171, // u
		0x0172, // U
		0x0173, // u
		0x0174, // W
		0x0175, // w
		0x0176, // Y
		0x0177, // y
		0x0178, // Y
		0x0179, // Z
		0x017A, // z
		0x017B, // Z
		0x017C, // z
		0x017D, // Z
		0x017E, // z
		0x017F, // f
		0x0180, // b
		0x0181, // B
		0x0182, // b
		0x0183, // b
		0x0184, // b
		0x0185, // b
		0x0186, // C
		0x0187, // C
		0x0188, // c
		0x0189, // D
		0x018A, // D
		0x018B, // d
		0x018C, // d
		0x018D, // q
		0x018E, // E
		0x018F, // e
		0x0190, // E
		0x0191, // F
		0x0192, // f
		0x0193, // G
		0x0194, // V
		0x0195, // h
		0x0196, // i
		0x0197, // I
		0x0198, // K
		0x0199, // k
		0x019A, // i
		0x019B, // a
		0x019C, // w
		0x019D, // N
		0x019E, // n
		0x019F, // O
		0x01A0, // O
		0x01A1, // o
		0x01A2, // q
		0x01A3, // q
		0x01A4, // P
		0x01A5, // p
		0x01A6, // R
		0x01A7, // S
		0x01A8, // s
		0x01A9, // E
		0x01AA, // l
		0x01AB, // t
		0x01AC, // T
		0x01AD, // f
		0x01AE, // T
		0x01AF, // U
		0x01B0, // u
		0x01B1, // U
		0x01B2, // V
		0x01B3, // Y
		0x01B4, // y
		0x01B5, // Z
		0x01B6, // z
		0x01B7, // 3
		0x01B8, // E
		0x01B9, // e
		0x01BA, // 3
		0x01BB, // 2
		0x01BC, // 5
		0x01BD, // 5
		0x01BE, // t
		0x01BF, // p
		0x01C0, // i
		0x01C1, // i
		0x01C2, // t
		0x01C3, // i
		//0x01C4, // DZ
		//0x01C5, // Dz
		//0x01C6, // dz
		//0x01C7, // LJ
		//0x01C8, // Lj
		//0x01C9, // lj
		//0x01CA, // NJ
		//0x01CB, // NJ
		//0x01CC, // nj
		0x01CD, // A
		0x01CE, // a
		0x01CF, // I
		0x01D0, // i
		0x01D1, // O
		0x01D2, // o
		0x01D3, // U
		0x01D4, // u
		0x01D5, // U
		0x01D6, // u
		0x01D7, // U
		0x01D8, // u
		0x01D9, // U
		0x01DA, // u
		0x01DB, // U
		0x01DC, // u
		0x01DD, // e
		0x01DE, // A
		0x01DF, // a
		0x01E0, // A
		0x01E1, // a
		0x01E2, // A
		0x01E3, // a
		0x01E4, // G
		0x01E5, // g
		0x01E6, // G
		0x01E7, // g
		0x01E8, // K
		0x01E9, // k
		0x01EA, // Q
		0x01EB, // q
		0x01EC, // Q
		0x01ED, // q
		0x01EE, // 3
		0x01EF, // 3
		0x01F0, // j
		//0x01F1, // DZ
		//0x01F2, // Dz
		//0x01F3, // dz
		0x01F4, // G
		0x01F5, // g
		0x01F6, // H
		0x01F7, // P
		0x01F8, // N
		0x01F9, // n
		0x01FA, // A
		0x01FB, // a
		0x01FC, // A
		0x01FD, // a
		0x01FE, // O
		0x01FF, // o
		0x0200, // A
		0x0201, // a
		0x0202, // A
		0x0203, // a
		0x0204, // E
		0x0205, // e
		0x0206, // E
		0x0207, // e
		0x0208, // I
		0x0209, // i
		0x020A, // I
		0x020B, // i
		0x020C, // O
		0x020D, // o
		0x020E, // O
		0x020F, // o
		0x0210, // R
		0x0211, // r
		0x0212, // R
		0x0213, // r
		0x0214, // U
		0x0215, // u
		0x0216, // U
		0x0217, // u
		0x0218, // S
		0x0219, // s
		0x021A, // T
		0x021B, // t
		0x021C, // 3
		0x021D, // 3
		0x021E, // H
		0x021F, // h
		0x0220, // n
		0x0221, // d
		0x0222, // 8
		0x0223, // 8
		0x0224, // Z
		0x0225, // z
		0x0226, // A
		0x0227, // a
		0x0228, // E
		0x0229, // e
		0x022A, // O
		0x022B, // o
		0x022C, // O
		0x022D, // o
		0x022E, // O
		0x022F, // o
		0x0230, // O
		0x0231, // o
		0x0232, // Y
		0x0233, // y
		0x0234, // l
		0x0235, // n
		0x0236 // t

	};

	public static char[] EXTENDED_UNICODE_REPLACE = {
		0x0069, // i
		0x0063, // c
		0x0079, // y
		0x0063, // c
		0x0061, // a
		0x0072, // r
		0x0075, // u
		0x0041, // A
		0x0041, // A
		0x0041, // A
		0x0041, // A
		0x0041, // A
		0x0041, // A
		0x0043, // C
		0x0045, // E
		0x0045, // E
		0x0045, // E
		0x0045, // E
		0x0049, // I
		0x0049, // I
		0x0049, // I
		0x0049, // I
		0x0044, // D
		0x004E, // N
		0x004F, // O
		0x004F, // O
		0x004F, // O
		0x004F, // O
		0x004F, // O
		0x0078, // x
		0x004F, // O
		0x0055, // U
		0x0055, // U
		0x0055, // U

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -