Ответы пользователя по тегу Автоматизация обработки текста
  • Как определить ударение в слове?

    ivanra
    @ivanra
    Могу дать наводку.
    В свое время была такая популярная библиотека padeg.dll, позволявшая склонять ФИО, должности и названия организаций. В слонении названий там применялся внутренний алгоритм, преобразующий исходный текст в строку звучности.
    Возможно, это то, что вам надо.
    Я в свое время конвертировал эту библиотеку их delphi в java, вот кусок кода оттуда:
    strToSonic
    	/**
    	 * разрешенные символы
    	 */
    	private static final String legalChar = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
    	/**
    	 * звучности символов
    	 * 3 - гласные
    	 * 2 - сонорные
    	 * 1 - шумные
    	 * ъ и ь не имеют звучности и обозначены символом ^
    	 */
    	private static char sonic(char index) {
    		//       абвгдежзийклмнопрстуфхцчшщъыьэюя
    		return ("31111311321222312113111111^3^333".charAt(index-'а'));
    	}
    	/**
    	 * Формирует строку звучности, соответствующую строке символов
    	 * @param value
    	 * @return
    	 */
    	public static String strToSonic(String value) {
    		StringBuilder result = new StringBuilder();
    		// заменим ё на е
    		value = value.toLowerCase().replace("ё", "е");	
    		if (value.length()>0) 
    			// для всех символов
    			for (int i = 0; i < value.length(); i++) {			
    				//if (legalChar.indexOf(value.charAt(i)) >= 0)	
    				char ch = value.charAt(i);
    				// если символ разрешенный
    				if (legalChar.charAt(0)<=ch && ch<=legalChar.charAt(legalChar.length()-1)) {
    					char test = sonic(ch);
    					// и имеет звучность
    					if (test != '^')
    						// заменим его на звучность
    						result.append(test);	
    				}
    			}
    		return result.toString();
    	}
    
    Ответ написан
    1 комментарий