2014-11-27 3 views
-1

Я использовал какой-то алгоритм подсчета слов, и более пристальным взглядом мне было интересно, потому что я выбрал меньше слов, чем первоначально в тексте, потому что они считают, например, «это» как одно слово. Поэтому я попытался найти решение, но без каких-либо успехов, поэтому я спросил себя, есть ли у них что-либо, чтобы превратить «короткое слово», например «это» в их «базовые слова», например «это».transfrom short word to original word

Спасибо за любую помощь.

+0

где ваш код? Какой алгоритм вы использовали? –

ответ

0

Ну, в основном вам необходимо предоставить структуру данных, которая отображает сокращенные термины в соответствующие длинные версии. Однако это будет не так просто, как кажется, например, вы не захотите преобразовать «Автомобиль клиента». до «Клиент - автомобиль».

Для управления этими случаями вам, вероятно, понадобится эвристика, которая имеет более глубокое понимание языка, который вы обрабатываете, и правил грамматики, которые он включает.

+0

Пример, который вы упомянули, является причиной, по которой я спрашиваю себя, существует ли такой инструмент;) – Flu

+0

API проверки правописания может предоставлять такие функции, но я полагаю, что они будут использовать их только внутри себя. Вы проверили, как инструменты с открытым исходным кодом, такие как OpenOffice, выполняют подсчет слов? – user1438038

+0

Спасибо, я проверю API – Flu

0

Я только что построил это с нуля для вызова. Кажется, он работает на моем конце. Дайте мне знать, как это работает для вас.

public static void main(String[] args) { 

    String s = "it's such a lovely day! it's really amazing!"; 

    System.out.println(convertText(s)); 
    //output: it is such a lovely day! it is really amazing! 

} 

public static String convertText(String text) { 
    String noContraction = null; 
    String replaced = null; 
    String[] words = text.split(' '); 

    for (String word : words) { 
     if (word.contains("'s")) { 
      String replaceAposterphe = word.replace("'", "$"); 
      String[] splitWord = replaceAposterphe.split('$'); 
      noContraction = splitWord[0] + " is"; 
      replaced = text.replace(word, noContraction); 
     } 
    } 
    return replaced; 
} 

Я сделал это на C# и попытался преобразовать его в Java. Если вы видите какие-либо синтаксические ошибки, укажите их.

+0

Спасибо, но этот алгоритм имеет ту же проблему, что и преобразование, например, «Клиент - автомобиль». «Клиент - автомобиль». – Flu

+0

Думаю, вы хотели сказать «Машина клиента» на «Клиент - автомобиль». Что-то вроде этого, как упоминалось пользователем1438038, понадобится алгоритм, построенный таким образом, чтобы узнать разницу между притяжательным и множественным числами. Я уверен, что это можно сделать, но это будет один сумасшедший алгоритм. –