Что простой путь состоит в том, чтобы генерировать ключевые слова из текста?

Насколько я могу судить, ваш синтаксис верен. Однако директива php_value Apache предоставляется модулем mod_php. Если вы не запускаете PHP как модуль Apache (например, он работает как FastCGI или какой-либо другой SAPI), эта директива не будет определена, поэтому ошибка 500.

Существует много способов изменить настройки PHP . На практике я обнаружил, что службы хостинга, которые запускают CGI, часто предоставляют пользовательский файл php.ini где-то в вашей учетной записи FTP. Кроме того, если вы запустите PHP / 5.3.0 или новее, вы можете использовать .user.ini файлы . И последнее, но не менее важное: в коде есть ini_set() .

17
задан brian d foy 22 January 2009 в 22:53
поделиться

7 ответов

Вы могли попытаться использовать модуль жемчуга Язык:: EN:: Теггер для быстрого и легкого решения.

А более сложный модуль Язык:: EN:: Semtags:: Механизм Язык использования:: EN:: Теггер с базой данных WordNet для получения более структурированного вывода. Оба довольно просты в использовании, просто проверяют документацию относительно CPAN или используют perldoc после установки модуля.

9
ответ дан 30 November 2019 в 11:27
поделиться

Название "высокочастотных английских слов" стоп-слова и существует много доступных списков. Я не знаю ни о каком Python или библиотеках жемчуга, но Вы могли закодировать свой список стоп-слова в двоичном дереве или хеше (или Вы могли использовать frozenset Python), затем поскольку Вы читаете каждое слово из входного текста, проверьте, находится ли это в Вашем 'стоп-листе', и фильтруйте его.

Примечание, что после удаления стоп-слов необходимо будет сделать приблизительно стемминг для нормализации получающегося текста (удаляют множественные числа, - ings, - редакторы), затем удалите все дублирующиеся "ключевые слова".

16
ответ дан 30 November 2019 в 11:27
поделиться

Самый простой способ сделать, что Вы хотите, является этим...

>>> text = "this is some of the sample text"
>>> words = [word for word in set(text.split(" ")) if len(word) > 3]
>>> words
['this', 'some', 'sample', 'text']

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

3
ответ дан 30 November 2019 в 11:27
поделиться

В Perl существует Язык:: EN:: Ключевые слова .

4
ответ дан 30 November 2019 в 11:27
поделиться

Одно решение для лайнера (слова дольше, чем два символа, которые произошли больше чем два раза):

perl -ne'$h{$1}++while m/\b(\w{3,})\b/g}{printf"%-20s %5d\n",$_,$h{$_}for sort{$h{$b}<=>$h{$a}}grep{$h{$_}>2}keys%h'

Править: Если Вы хотите отсортировать в алфавитном порядке слова с той же частотой, может использовать этот расширенный:

perl -ne'$h{$1}++while m/\b(\w{3,})\b/g}{printf"%-20s %5d\n",$_,$h{$_}for sort{$h{$b}<=>$h{$a}or$a cmp$b}grep{$h{$_}>2}keys%h'
2
ответ дан 30 November 2019 в 11:27
поделиться

Для нахождения наиболее часто используемых слов в тексте сделайте что-то вроде этого:

#!/usr/bin/perl -w

use strict;
use warnings 'all';

# Read the text:
open my $ifh, '<', 'text.txt'
  or die "Cannot open file: $!";
local $/;
my $text = <$ifh>;

# Find all the words, and count how many times they appear:
my %words = ( );
map { $words{$_}++ }
  grep { length > 1 && $_ =~ m/^[\@a-z-']+$/i }
    map { s/[",\.]//g; $_ }
      split /\s/, $text;

print "Words, sorted by frequency:\n";
my (@data_line);
format FMT = 
@<<<<<<<<<<<<<<<<<<<<<<...     @########
@data_line
.
local $~ = 'FMT';

# Sort them by frequency:
map { @data_line = ($_, $words{$_}); write(); }
  sort { $words{$b} <=> $words{$a} }
    grep { $words{$_} > 2 }
      keys(%words);

Вывод в качестве примера похож на это:

john@ubuntu-pc1:~/Desktop$ perl frequency.pl 
Words, sorted by frequency:
for                                   32
Jan                                   27
am                                    26
of                                    21
your                                  21
to                                    18
in                                    17
the                                   17
Get                                   13
you                                   13
OTRS                                  11
today                                 11
PSM                                   10
Card                                  10
me                                     9
on                                     9
and                                    9
Offline                                9
with                                   9
Invited                                9
Black                                  8
get                                    8
Web                                    7
Starred                                7
All                                    7
View                                   7
Obama                                  7
5
ответ дан 30 November 2019 в 11:27
поделиться

Я думаю самый точный путь, который все еще поддерживает подобие простоты, должен был бы считать частотность слова в Вашем источнике, затем взвесить их согласно их частотам на общем английском языке (или безотносительно другого языка) использование.

Слова, которые кажутся менее часто широко использующимися, как "кафе", более вероятно, будут ключевым словом, чем слова, которые появляются чаще, как "собака". Однако, если Ваш источник упоминает "собаку" 500 раз и "кафе" дважды, более вероятно, что "собака" является ключевым словом даже при том, что это - общее слово.

Выбор схемы взвешивания был бы трудной частью.

0
ответ дан 30 November 2019 в 11:27
поделиться