Как я могу извлечь собственные имена из строки, используя PHP или JavaScript? - PullRequest
1 голос
/ 26 июня 2009

как я могу извлечь правильные существительные / числовые значения из строки, используя PHP или JavaScript? пример есть строка типа

Xyz посетил эту страницу эту страницу 53 минут назад.

Я хочу иметь возможность распознавать «Xyz» и «53» как собственно существительное и числовое значение соответственно

Ответы [ 5 ]

1 голос
/ 26 июня 2009

Единственный очевидный способ - иметь словарь правильных известных имен и хорошую индексацию для быстрого поиска, если такая вещь существует.

Но у меня такое ощущение, что вы ищете способ грамматически сделать вывод, что слово является существительным.

Я не могу придумать идеального способа сделать это, но если вы создали ряд правил, вы могли бы использовать их для разбора отрывка.

Правила могут включать. * Слова, оканчивающиеся на ly, не являются собственными * Шумовые слова, такие как и, к, но и т. Д. Не являются собственными существительными * слова с заглавными буквами, но не начинающие предложение, являются собственными существительными

Чтобы улучшить его, вы можете использовать эти правила для создания словаря имен собственных. Каждый раз, когда слово следует одному из этих правил, оно либо добавляется, либо удаляется из правильного словаря существительных.

Это очень грубо - если это на правильном пути, то, вероятно, я могу быть более конкретным.

0 голосов
/ 23 августа 2011
Xyz visisted this page this page 53 mins ago.

Теперь, просто получите позицию "посетил эту страницу" или что-то еще, и это ваша длина с начала отправки. Если, например, «Персона» всегда в начале, просто установите начальную точку на 7 и вычтите 7 из первого числа. Вот быстрый пример JS:

alert(str.substr(7, str.IndexOf("visited") - 7));

Который должен вернуть "Xyz". Надеюсь, это поможет. Конечно, это работает, только если вы знаете структуру вашего предложения, что будет иметь место в приведенном примере.

P.S. Я знаю, что опоздал на два года, но это может помочь кому-то в будущем.

0 голосов
/ 20 июля 2009

Лучший вариант - использовать грамматику ссылок. Разберите предложение и извлеките имена собственные.

www.link.cs.cmu.edu / ссылка

0 голосов
/ 26 июня 2009

Функции PHP is_numeric и ucfirst могут помочь распознать слова:

function parse_name_and_number($sentence) {
    $words = explode(' ', $sentence);
    $name = array();
    foreach ($words as $word) {
        if (is_numeric($word))
            $number = $word;
        elseif ($word == ucfirst($word))
            $name[] = $word;
    }
    $name = implode(' ', $name);
    return array('name' => $name, 'number' => $number);
}

print_r(parse_name_and_number('Xyz visited this page 53 minutes ago'));
// output:  Array ( [name] => Xyz [number] => 53 )

print_r(parse_name_and_number('we thought Bim de Verdier visited the page 5 seconds ago'));
// output:  Array ( [name] => Bim Verdier [number] => 5 )

print_r(parse_name_and_number('Weirder input messes up the results'));
// output:  Array ( [name] => Weirder [number] => )
0 голосов
/ 26 июня 2009

Если в предложении всегда присутствует одно собственное существительное, вы можете найти его, ища слово, начинающееся с заглавной буквы. И если нет ничего, кроме первого слова, то это так. Проблема возникает, если Xyz называется Bim de Verdier или он не имеет заглавной буквы.

// Get the number with JavaScript and RegExp
var regex = new RegExp("\d+");
var match = regex.exec("Xyz visisted this page this page 53 mins ago.");
if (match == null) {
  alert("No match");
} else {
  var s = "";
  for (i = 0; i < match.length; i++) {
    s = s + match[i] + "\n";
  }
  alert(s);
}

Заглавное слово может соответствовать «[A-Z] [a-z] + []».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...