Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.18;
Скачать: CL | DM;

Вниз

список замен   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.68 MB
Время: 0.02 c
2-1208518214
lewka-serdceed
2008-04-18 15:30
2008.05.18
Не понятные символы в строке


2-1208322491
Mishenka
2008-04-16 09:08
2008.05.18
Как переписать статический метод?


15-1207128130
kiberg
2008-04-02 13:22
2008.05.18
список замен


2-1208676926
Necromancer13
2008-04-20 11:35
2008.05.18
UNION в Паскале


2-1208676738
Mag
2008-04-20 11:32
2008.05.18
Редактирование текстового файла. Замена части текста на другой.