Форум: "Прочее";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
Внизсписок замен Найти похожие ветки
← →
VirEx © (2008-04-02 17:09) [80]
> О! А, об это по подробнее, пожалуйста.
Лучше проверять такие сочетания в слогах, а то бывают такие словечки, что язык сломаешь.
Была здесь раньше такая тема:
Gydvin © (09.07.07 17:49)
Нигде случайно не попадался словарь переносов русского языка? В текстовом формате самое оно.
Очень нужно.
Предлагал такой код:
function WordToSlog(str:string;words_iskl:TStrings):string;
function UpString(str:string):string;
var
i:integer;
begin
result:=str;
for i:=1 to length(Result) do
case Result[i] of
"а".."я": Dec(Result[i], 32);
end;
end;
//ищет в строке str с позиции index комбинацию из всех комбинаций согласной s и гласной g
function slog(str:string; index:integer; s,g:array of string):boolean;
//проверяет, гласная ли буква
function IsGlasn(c:char;g:array of string):boolean;
var
i:integer;
begin
result:=false;
for i:=low(g) to high(g) do
if c=g[i] then begin
result:=true;
exit;
end;
end;
var
i,y:integer;
s_,l_:string;
begin
result:=false;
for i:=low(s) to high(s) do
for y:=low(g) to high(g) do begin
s_:=UpString((s[i]+g[y]));
l_:=UpString(copy(str,index,2));
if s_=l_ then
{если перед слогом стоит гласная, то}
{if IsGlasn(str[index-1],g) then} begin
result:=true;
exit;
end;
end;
end;
//проверяет, по индексу в строке, стоит ли предлог, и передает через len его длину
function IsPredlog(str:string; index:integer; p:array of string; var len:integer):boolean;
var
i:integer;
begin
result:=false;
for i:=low(p) to high(p) do
if copy(str,index,length(p[i]))=p[i] then begin
len:=length(p[i]);
result:=true;
exit;
end;
end;
//ищет корень, точно такой же поиск как поиск предлога
function IsKoren(str:string; index:integer; c:array of string; var len:integer):boolean;
begin
result:=IsPredlog(str,index,c,len);
end;
//количество слогов
function GetSlogCount(str:string; s,g:array of string):integer;
var
i:integer;
begin
result:=0;
for i:=1 to length(str) do
if slog(str,i,s,g) then inc(result);
end;
//вставляет стоку substr в искомую str в позицию index
procedure InsStr(var str:string; substr:string; index:integer);
begin
if index=0 then exit;
str:=copy(str,1,index)+substr+copy(str,index+length(substr),length(str))
end;
const
//а б в г д е ё ж з и к л м н о п р с т у ф х ц ч щ ь ъ э ю я
s : array[1..19] of string =("б","в","г","д","ж","з","к","л","м","н","п","р","с","т","ф","х","ц","ч","щ"); //согласные
g : array[1..10] of string =("а","е","ё","и","о","у","э","ю","я","ы");//гласные
p : array[1..3] of string =("пре","пере","под"); //предлоги
c : array[1..3] of string =("прав","нос","воскл");//корни
var
i,y,z:integer;
begin
result:=str;
for i:=0 to words_iskl.Count-1 do
if UpString(str)=UpString(words_iskl[i]) then exit;
//если меньше одного слога то не переносится
if GetSlogCount(str,s,g)<2 then exit;
i:=1;y:=0;
while i<length(str) do begin
z:=0;
if IsPredlog(str,i,p,z) then inc(i,z) else //предлоги не переносим
if IsKoren(str,i,c,z) then inc(i,z) else //также как и корни
if slog(str,i,s,g) then begin
inc(y);
if y>1 then //избавляемся от просто --> п-рос-то
InsStr(str,"-",i-1);
inc(i);
end;
inc(i);
end;
result:=str;
end;
результат работы:
Москва Москва
Идиот Идиот
Лохотрон Лохотрон
Квазимодо Ква-зи-мо-до
Параллелепипед Па-рал-ле-ле-пи-пед
Изобретатель Изоб-ре-та-тель
слово сло-во
мангал ман-гал
трапеция тра-пе-ция
караганда ка-ра-ган-да
переносимый переноси-мый
эксгибиционист эксги-би-цио-нист
неправдоподобный неправдоподоб-ный
восклицание восклица-ние
абстракция абстрак-ция
странный стран-ный
икслючения:
Азия
узнаю
фойе
Москва
Лохотрон
Тоесть тебе нужно будет составить небольшой словарь неправильных слогов, исключений, корней и т.п.
Вобще-то должен быть пользовательский словарь слов-исключений, которые как в ворде добавляются через меню. Т.е. пользователь будет иногда программу "обучать".
← →
clickmaker © (2008-04-02 17:21) [81]
> пвио, пв (?)
"мой папа служит в ПВО: и морда - во, и жопа - во"
← →
Johnmen © (2008-04-02 17:28) [82]"а потому, что пьёт он ПИВО"
← →
VirEx © (2008-04-02 17:31) [83]
> [81] clickmaker © (02.04.08 17:21)
>
> > пвио, пв (?)
>
> "мой папа служит в ПВО: и морда - во, и жопа - во"
ЭТО НИРАЗУ НЕ СЛОВО РУССКОГО ИЗЫКА, ПОЭТОМУ ДАЖЕ ВОРД ИГНОРИРУЕТ
← →
VirEx © (2008-04-02 17:33) [84]
> [82] Johnmen © (02.04.08 17:28)
> "а потому, что пьёт он ПИВО"
вот поэтому и было предложено
> [80] VirEx © (02.04.08 17:09)
← →
Johnmen © (2008-04-02 17:38) [85]
> ЭТО НИРАЗУ НЕ СЛОВО РУССКОГО ИЗЫКА, ПОЭТОМУ ДАЖЕ ВОРД ИГНОРИРУЕТ
А какого языка это слово? Сам я даже боюсь предположить...
И чт о за слово "ВОРД"? Игнорируем...
← →
VirEx © (2008-04-02 17:51) [86]
> [85] Johnmen © (02.04.08 17:38)
это аббревиатура
← →
Johnmen © (2008-04-02 18:00) [87]
> VirEx © (02.04.08 17:51) [86]
> это аббревиатура
А аббревиатура - это трансглюкавые мымрики?
← →
Anatoly Podgoretsky © (2008-04-02 18:11) [88]> Дмитрий С (02.04.2008 13:42:05) [5]
Из слова хлеб элементарно получается пиво, путем всего лишь четырех замен.
← →
Anatoly Podgoretsky © (2008-04-02 18:13) [89]> Игорь Шевченко (02.04.2008 14:08:11) [11]
О и ты туда же.
Вообще то парень на ноблевку тянет, а получит шнобелевку..
← →
VirEx © (2008-04-02 18:13) [90]
> [87] Johnmen © (02.04.08 18:00)
>
> > VirEx © (02.04.08 17:51) [86]
> > это аббревиатура
>
> А аббревиатура - это трансглюкавые мымрики?
Да, потомучто ОБХСС, КГБ, ГИБДД и тому подобные мымрики могут нарушать абсолютно любые правила русского словообразования, потому как это не слова (еще раз повторяюсь)
← →
Anatoly Podgoretsky © (2008-04-02 18:13) [91]> kiberg (02.04.2008 14:15:12) [12]
Тебе пример с хлебом привели, не понятно?
← →
Anatoly Podgoretsky © (2008-04-02 19:28) [92]> kiberg (02.04.2008 14:49:40) [40]
Тебе привести хрестоматийный пример с Екатериной 2, она в слове из трех букв, сделала четыре ошибки, и не одной правильной буквы их оригинала не было, пример с хлебом мелкие брызги, более вероятный, чем у нее.
← →
Anatoly Podgoretsky © (2008-04-02 19:28) [93]> Johnmen (02.04.2008 15:00:46) [46]
Это горы, одна лишняя буква, и две замененыF0иной 2, она в слове из трех букв, сделала четыре ошибки, и не одной правильной буквы их оригинала не было, пример с хлебом мелкие брызги, более вероятный, чем у нее.
← →
Johnmen © (2008-04-02 22:59) [94]
> VirEx © (02.04.08 18:13) [90]
> Да, потомучто ОБХСС, КГБ, ГИБДД
> и тому подобные мымрики могут нарушать абсолютно любые правила
> русского словообразования, потому как это не слова (еще
> раз повторяюсь)
Это чё за логика такая интересная - "это не слова, потому что могут нарушать абсолютно любые правила русского словообразования"?
Правила спряжения не нарушают, к примеру.
Так что же это? Если не слова и не мымрики?
← →
VirEx © (2008-04-03 17:30) [95]
> [94] Johnmen © (02.04.08 22:59)
> Так что же это? Если не слова и не мымрики?
Это и есть мымрики. Если я увижу в словаре ГОУ ДОСН СДЮШОР, тогда это будет словами, а сокращение это и есть сокращение, аббревиатура - ничем кроме аббревиатуры не является.
Пиво - это понятие, которым именуется некий напиток неприятного мочевого цвета.
ПВЗ (ПиВоваренный Завод) - это сокращение, притом такое сокращение, в котором только одна из букв характеризует общее значение аббревиатуры - "Завод".
заглянем в вики:
Слово — центральная единица языка. Это основная номинативная и когнитивная единица языка, служащая для именования и сообщения о предметах, признаках, процессах и отношениях.
Пиво - единица языка, потомучто в русском языке оно означает предмет (жидкий мутный противный напиток).
ПВЗ - это солянка из единиц языка, в русском языке такого нет. Смысл этой аббревиатуры характеризует одно из слов в его "составе". Притом ПВЗ можно расшифровать как угодно, хоть ПеньковоВаленковый Завод.
> Правила спряжения не нарушают, к примеру.
Так ведь перед тем как утвердить аббревиатуру, немного мозгами шевелят, чтобы благозвучней было.
Что-то такой аббревиатуры я не видел: ЪХЙЬ
← →
Игорь Шевченко © (2008-04-03 17:43) [96]
> Пиво - единица языка, потомучто в русском языке оно означает
> предмет (жидкий мутный противный напиток).
Сам ты противный
← →
Johnmen © (2008-04-03 17:50) [97]
> VirEx © (03.04.08 17:30) [95]
Ну с логикой ты не очень дружишь. Русский язык не очень знаешь. Пиво не любишь. Это мы увидели, спасибо.
Но зачем постить здесь продукты жизнедеятельности личных мозговых извилин?
ЗЫ
Википедию читаешь - это хорошо. Посмотри на досуге определение аббревиатуры.
← →
VirEx © (2008-04-03 18:13) [98]
> [97] Johnmen © (03.04.08 17:50)
>
> > VirEx © (03.04.08 17:30) [95]
>
> Ну с логикой ты не очень дружишь. Русский язык не очень
> знаешь. Пиво не любишь. Это мы увидели, спасибо.
> Но зачем постить здесь продукты жизнедеятельности личных
> мозговых извилин?
>
> ЗЫ
> Википедию читаешь - это хорошо. Посмотри на досуге определение
> аббревиатуры.
Логика:
Слово это слово, т.е. единица языка, значение название или определение чего-либо.
Набор букв из слов - это набор букв из слов. Не более. Как бы аббревиатура не "уважала" правила словообразования, она не станет словом, пока не войдет в язык в виде одного понятия, после чего начнет считаться словом.
Пример: эсэсовец - это слово, т.к. означает человека имеющего принадлежность к вооруженному формированию СС. А "СС" это аббревиатура, и означать она может что угодно:
СС (нем. Schutzstaffel, охранные отряды) — вооружённые формирования нацистов в 1923—1945 годах.
СС — система счисления
СС — название электровоза (Сурамский Советский)
СС - Советский Союз в сокращении КПСС
CC — сокращённое название организации и лицензий Creative Commons
Про вики:
Википедия и является "свободно редактируемым" сервисом, потомучто ошибкам предрасположен любой вбивающий туда текст.
З.Ы.
Если ты споришь ради спора - пожалуйста. Я с удовольствием рассмотрю твои подтверждения твоих же логических рассуждений. Ты только по сути чаще пиши, а то скучно читать пустословные заявления и твое личное отношение к оппонентам.
← →
uniken1 © (2008-04-03 18:16) [99]
> Как можно оптимизировать алгоритм?
Алгоритм не описан.
Я несколько раз делал нечто подобное через массив байт. обращаемся к строкам(исходной и из словаря) как массивам байт, при проверке вычитаем соответствующие элементы мыссивов. Результат проверяем через некоторые заданные условия(битовые маски?), нпример более 2 байт-разлиий или ограничить не верность первого символа (можно сильно ускорить индексацией словаря).
← →
VirEx © (2008-04-03 18:37) [100]
> [96] Игорь Шевченко © (03.04.08 17:43)
>
> > Пиво - единица языка, потомучто в русском языке оно означает
>
> > предмет (жидкий мутный противный напиток).
>
>
> Сам ты противный
Пиво вобще немецкое изобретение (я так думаю).
Наш выбор: квас и медовуха.
← →
uniken1 © (2008-04-03 19:31) [101]
> Пиво вобще немецкое изобретение (я так думаю).
http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D0%B2%D0%BE
исторически немцы к происхождению пива не имеют отношения
← →
Игорь Шевченко © (2008-04-03 19:36) [102]
> Пиво вобще немецкое изобретение (я так думаю).
> Наш выбор: квас и медовуха.
И шовинист к тому же
← →
VirEx © (2008-04-03 21:01) [103]
> [101] uniken1 © (03.04.08 19:31)
>
> > Пиво вобще немецкое изобретение (я так думаю).
>
> http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D0%B2%D0%BE
> исторически немцы к происхождению пива не имеют отношения
Там же:
Однако некоторые римские историки в начале нашей эры упоминали, что кельтские, германские и другие племена пили пиво.
← →
uniken1 © (2008-04-03 21:47) [104]Исходное
> Пиво вобще немецкое изобретение
> Однако некоторые римские историки в начале нашей эры упоминали,
> что кельтские, германские и другие племена пили пиво.
Теперь еще раз пречитай и сравни время германия 2-7 в.н.э и Египет 5-4 в. ДО.Н.Э.
С таким подходом, я только что изобрел Электиричество, я настолько суров...
← →
VirEx © (2008-04-03 22:12) [105]
> [104] uniken1 © (03.04.08 21:47)
> Исходное
>
> > Пиво вобще немецкое изобретение
>
>
>
> > Однако некоторые римские историки в начале нашей эры упоминали,
> > что кельтские, германские и другие племена пили пиво.
>
> Теперь еще раз пречитай и сравни время германия 2-7 в.н.э
> и Египет 5-4 в. ДО.Н.Э.
> С таким подходом, я только что изобрел Электиричество, я
> настолько суров...
"И вновь лампочка Ильича осветила его мрачную хижину".
Будь по твоему. Ты мое мнение изменил.
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
Память: 0.67 MB
Время: 0.048 c