Pull to refresh

Comments 45

Зачем выводить листинг класса на странице? Тут он не сильно нужен, желающие могут перейти по ссылке и посмотреть.
потому что в нем комментарии и так легче понять суть алгоритмов, к тому же так легче обсуждать что-то из реализации, чем заставлять людей куда-то ходить только для комментария. Тем более он небольшой
спасибо, что выложили, это намного лучше чем рыться где-нибудь на соурс-фордже и качать)
Скажите, а зачем конструктор true возвращает? Его ведь вообще убрать можно, раз ничего не делает.
да, наверное, сначала думал в него какой-то функционал вложить, например, проверку присутствия библиотек и т.п.
Даже в этом случаем сдается мне, что это не нужно. И на сколько я помню не правильно это.

Зачем конструктору что либо возращать? Да и как вы воспользуйтесь результатом работы такого метода? Что, если в конструкторе вернуть false объект не будет создан?


class Example {
function __construct() {
return false;
}
};
$x = new Example();
var_dump($x);
var_dump(new Example());
Вещь интересная и полезная. Былоб еще лучше, еслиб кодировку при инициализации класса можно было задать свою или методами. Неважно как, главное, что этого немного не хватает. Конечно вы скажете, что все в UTF'е делать надо, но если придется разбирать чей-нибудь текст (напаршенный, вытащенный поисковым ботом) придеться лишний раз его конвертировать. Быстрее если класс будет под текст подстраиваться, а не наоборот. Автор молодец. (хотел бы плюсануть, да не могу =/)
прошу прощения, не совсем понял, о чем речь. В классе при обработке идет переконвертация, поэтому на входе может быть любой текст в любой кодировке.
сначала код не читал, поэтому не знал, сори.
Но вторая часть моего поста, до сих пор в теме. Для определения языка идет перекодировка текста. При большой нагрузке - не оптимально. Если бы скрипт, определяя кодировку входного текста, выбирал нужную таблицу для сравнения исходя из полученной кодировки. Те не надо конвертировать сам текст, лучше использовать несколько таблиц и правил сохраненых в разных кодировках заранее. Вот про что я. Надеюсь, Александр, вы поняли о чем я.
особенность библы MB — автоопределение кодировок)
Имеет в виду mb_detect_encoding? Я бы совершенно не стал полагаться на данную функция для этой задачи.

Берем такой вот скрипт:
$str = "Тут строка символов";
$str = iconv('utf-8', 'koi8-r', $str);
echo $str;
echo mb_detect_encoding($str);
сохраняем его в UTF-8 и смотрим результат работы в браузере.
Мда, вы правы. Кои он не определяет)
Толку от кодировок... если при парсинге отдающая сторона не сообщает тебе кодировку, то определить её обычными метода нельзя. А выходную то кодировку и там можно сварганить какую угодно.
вообще здорово, материал инетесно почитать, класс весьма полезен и если учитывать, что последний топик посвященный пхп был пол месяца назад, то надо сказать спасибо автору за такую работу)
Топик и вправду хорош и может пригодиться.
И за тему частоты появления пыха согласен. Хотя.. Я вот мечтал набрать кармы, чтобы выложить описалово своей оупенсурсной шаблонки в ленте. По дороге кинул в блог тему про гугл, в итоге лешился права выкладывать даже в блог. Так что теперь всех любителей пыха могу только пригласить в топик на пхп.ру
http://php.ru/forum/viewtopic.php?t=11926
Ну вообщем да, тот топик ненужный) А про шаблоны охото было б порассуждать на хабре, на пхп.ру не охото регаться. Может кто нибудь с хорошой кармой сможет сделать закрытый топик, в котором можно было бы всем вместе порассуждать на эту тему?
Если кто вызовется, я был бы только рад.
UFO just landed and posted this here
Вы безусловно молодец. Но как мне кажется изобрели очередной велосипед ;)

Задача определения языка стара как мир, и если поискать в гугле "n gram based language detecting" либо "n gram based text categorization" то можно найти много интересного на эту тему.

Из того, что знаю я: TextCat (http://odur.let.rug.nl/~vannoord/TextCat/). Определяет 69 различных языков.

http://www.let.rug.nl/~vannoord/TextCat/competitors.html - список "конкурентов"

Правда я не уверен что среди них есть хоть чтото на PHP. Но если я не ошибаюсь, то мне попадался на глаза пример работы с textcat из PHP.
да вот именно, что на РНР нет, и к тому же метод "n-gramm" это только один из вариантов :) и в нем есть свои сложности.
Кстати, это самый TextCat плохо работает:
Фраза "Реализация для PHP4 в полной мере невозможна из-за отсутствия модификаторов области видимости (private, protected, public). Однако четко придерживаясь соглашений о кодировании использовать данный шаблон возможно.
Код может быть примерно таким:" - Result UNKNOWN
как это масштабируется? ну там, сотню-другую языков добавить?
а их столько нету вообще-то :) а что, есть надобность? добавить можно и будет работать нормально. Оптимизировать можно, но надо ли - эта система для тех областей, где нет сотен а есть несколько, ну десяток языков. Специальных тестов производительности я не делал, но если будет время, оценю.
есть, конечно. Вопрос надобности зависит от того, на каких клиентов рассчитываете. Если в пределах МКАД, то не надо.

И не про производительность речь. Из куска кода можно сделать вывод, что для каждого языка нужно вручную вбивать все данные. А это может занять определённое время, особенно, если язык автору незнаком.
При этом вообразите усилия, которые надо применить, чтобы различить диалекты норвежского, например. Или не ошибиться при русском падонковском. Или отличить сербский от боснийского.

Языки надо различать по meta lang.
жаль, не всегда этот мета есть. особенно если автор контента о нём не слыхал никогда
полезное решение, вполне может пригодится, читать и комментировать всегда проще чем творить и создавать, автору респект за энергетику
P. S. буковка "A" в лупу не вписалась :)
:)) это свидетельство статистичности и в итоге вероятностного результата детекции :)
http://abrdev.com/phplangdetect/
если ввести:
цfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцfцf
выдает:
Результат проверки:
Основной язык текста:

(т.е. нет сообщения, что "язык неопределен")
UFO just landed and posted this here
Простите, а где написано, что для того, чтобы быть библиотекой, нужно Х методов? а Х-1 уже не библиотека? Покажите, плиз, где и кто это сказал.
Какую сущность описывает мой класс? Он инкапсулирует все, что необходимо для реализации описанного функционала. Почему он должен описывать множество? Это обязательно? Нет.

Вот вы столько написали, завидую вашей энергии, может возьмёте и допишете? А то критиковать каждый может, а написать самому? И прежде чем что-то кому-то советовать, потрудитесь аргументировать свои слова, чтобы они не выглядели громогласными пустокриками.
UFO just landed and posted this here
зачем вы используете термины из ООП, если пишете процедурно? зачем людей путать? классов у вас нет. у вас обычный набор свободно висячих функций и глобальных переменных. стесняетесь, что ли?
Ещё один велосипедик, который я использовал в одном из своих проектов http://boxoffice.ch/pseudo/ng.php Может кому-нибудь пригодится.
Вопрос дилетанта: как эффективнее всего распознать слово с английскими буквами в строке? Строка cp-1251. До перебора символов и сверки кодов я и сам могу додуматься. Хотелось бы узнать, есть ли способ эффективнее / удобнее.
все бы хорошо, но на моих (возможно. а возможно и вообще не работает) текстах не работает

например, на таком
Image-based 3-D face modeling system

причем не работает как скаченный код, так и формочка на сайте (пример)

а жаль :(
ну во первых, код открыт, попробуйте посмотрите внутрь. Кстати, написано что меньше 50 символов не будет воспринимать, в вашем тексте, если убрать спецсимволы, меньше намного
к сожалению, даже если повторить этот текст несколько раз до достижения 50и символов, то результата в онлайн-тесте не получается

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

далее, возможно, вам будет не очень интересно, но другим читателям…

вот эту:
php.southpark.com.ua/2007/language-detection/

минусы такие: не быстро работает, есть false positives
плюсы — на остальном работает, false positives можно фильтрануть в моем случае (en, ru в utf-8)
Вот очень старая (2002 год), но на мой взгляд хорошая статья об автоматическом определении кодировки:
ivr.webzone.ru/articles/defcod_2/index.htm
А вот тут реализация на PHP функции перекодировки текста из любой кодировки в windows-1251 на PHP:
popoff.donetsk.ua/text/work/libs/a/charset/
Код правда не очень красивый, и конечно же полезнее была бы перекодировка в UTF-8, но это самый стабильный вариант что удалось найти на PHP. И всегда всё можно исправить :)
вот это вы мало того что некропостер, так еще и не по теме написали :)
Наверное комментарий предназначался этому топику: habrahabr.ru/blogs/php/107945/

А в этом топике речь не про кодировки, а про языки
Да, к сожалению не туда отправил, но в целевой теме эти ссылки уже появились :)
Sign up to leave a comment.

Articles