Re: Сравнение 2 строк и их % соотношение!
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 15.04.05 12:22
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А может я ошибаюсь! Я буду очень благодарен за любую помощь в этом направлении!


Судя по обсуждению (ну в частности то, что будут строки типа "дущие домой" и "идущие дамой") можно глянуть на SoundEx.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
HgLab: Mercurial Server and Repository Management for Windows
Re[2]: Сравнение 2 строк и их % соотношение!
От: Alex Alexandrov США  
Дата: 17.04.05 07:51
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, Аноним, Вы писали:


А>>Stroka1 ="А.пугачёва — Балалайка" \

А>>Stroka1 ="Пугачёва-балалайка" / здесь примерно 98-99% (Вот как раз надо и подсчитать!)

W>А что будешь делать с этим: "Pugacheva — Balalayka"?

W>Забей, то что ты хочешь для тебя нереально.

Пусть пытается. В этом мире становятся известными только те, кто делает невозможное.
[ Posted via RSDN@Home 1.1.4 beta 4 (303) listening to silent ]
It's kind of fun to do the impossible (Walt Disney)
Re[8]: Сравнение 2 строк и их % соотношение!
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.04.05 14:27
Оценка:
Здравствуйте, IIIypuk, Вы писали:

III>При моей реализации подсчета вектора корреляции вот твкая херня выходит!

III>Это для первого варианта где 1 это несовпадение с твоим Sinclair
Я мог ошибиться. Вот код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ArrayToString(const a: array of integer): string; forward;

function VectorLength(const a: array of integer): extended;
var
  R2: extended;
  i: integer;
begin
  R2:= 0;
  for i:= Low(a) to High(a) do
    R2:= R2 + a[i];
  Result := R2/((High(a)+1));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  N, K: integer;
  str1, str2, str3: string;
  i, j: integer;
  Match: array of Integer;
begin
  str1:= Edit1.Text;
  str2:= Edit2.Text;
  N:= max(Length(str1), Length(str2));
  if Length(str2)<N
  then begin
    str3:= str2;
    str2:= str1;
    str1:= str3;
  end;
  SetLength(Match, N);
  for i:=0 to N-1 do
  begin
    K:= 0;
    for j:= 0 to Length(str1)-1 do
      if str1[j+1] = str2[(j+i) mod N + 1]
        then Inc(K);
    Match[i]:= K;
  end;
  Memo1.Lines.Text:= ArrayToString(Match);
  Label1.Caption := FloatToStr(VectorLength(Match));
end;

function ArrayToString(const a: array of integer): string;
var
  i: integer;
begin
  for i:= Low(a) to High(a) do
    Result:= Result+IntToStr(a[i])+', ';
  if (Length(Result)>0) then SetLength(Result, Length(Result)-2);
end;

end.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Сравнение 2 строк и их % соотношение!
От: alex_raider Россия  
Дата: 17.04.05 15:59
Оценка:
Здравствуйте, Sinclair, Вы писали:
S>Попробуй посчитать вектор корреляции.

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

Вместо того чтобы тратить время на объяснения, просто
а) найти искомое легко можно зная точные слова поиска. Эти ключевые слова "нечеткое сравнение" и "мягкое сравнение". fuzzy string compare, fuzzy comparison algorithms, soft string comparison.
б) выложу у себя рабочие исходники нечеткого сравнения строк вместе в документацией

Забирайте файл у меня по прямой ссылке:
http://n64dev.narod.ru/softcmp.rar 107,393 bytes
Re: Сравнение 2 строк и их % соотношение!
От: xBlackCat Россия  
Дата: 18.04.05 07:41
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Привет народ!

А>Подскажите пожалуйста

А>А так же подскажите как прочитать Тэги ID3v1 и ID3v2 из MP3-хи!!!(на си)

Формат MP3. А дальше — только прямые руки и кривые извилины (главное — не перепутать)

А>Зарание большое спасибо!!!
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Rojac &mdash; Rsdn Offline JAva Client
Анонсы и обсуждение здесь
Автор: xBlackCat
Дата: 08.02.10
Re[9]: Сравнение 2 строк и их % соотношение!
От: IIIypuk  
Дата: 18.04.05 10:00
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, IIIypuk, Вы писали:


III>>При моей реализации подсчета вектора корреляции вот твкая херня выходит!

III>>Это для первого варианта где 1 это несовпадение с твоим Sinclair
S>Я мог ошибиться. Вот код:

Я тут сам не моного прогнал,сам уже разобрался!
Кому интересно вот как я нахожу %;
x=vect_cor(str1,str1);
y=vect_cor(str2,str2);
z=vect_cor(str1,str2);

%_1 = 100*z/x; % соотношение относилетьно 1 строки;

%_2 = 100*z/y; % соотношение относилетьно 2 строки;

Благодарен за представленную мне информацию!!!
Re[2]: Сравнение 2 строк и их % соотношение!
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 24.05.05 16:29
Оценка:
Здравствуйте, Нахлобуч, Вы писали:


Н>Судя по обсуждению (ну в частности то, что будут строки типа "дущие домой" и "идущие дамой") можно глянуть на SoundEx.


А есть SoundEx для русского языка?
Алексей Кирдин
Re[3]: Сравнение 2 строк и их % соотношение!
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 24.05.05 19:05
Оценка:
Здравствуйте, Kaa, Вы писали:

Н>>Судя по обсуждению (ну в частности то, что будут строки типа "дущие домой" и "идущие дамой") можно глянуть на SoundEx.


Kaa>А есть SoundEx для русского языка?


Ежели доки почитать, то, наверное, можно будет родить что-нибудь:
Java &mdash; реализация
The Daitch-Mokotoff Soundex System
«Как ваша фамилия», или Русский MetaPhone
Soundex
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
HgLab: Mercurial Server and Repository Management for Windows
Re: Сравнение 2 строк и их % соотношение!
От: Dimonka Верблюд  
Дата: 25.05.05 11:51
Оценка:
А есть ли простые алгоритмы посчитать похожесть строк без учёта перестановок слов?

Допустим, различие двух строк только в пробелах, запятых или сокращениях слов.
Re[2]: Сравнение 2 строк и их % соотношение!
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 25.05.05 12:12
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>А есть ли простые алгоритмы посчитать похожесть строк без учёта перестановок слов?


D>Допустим, различие двух строк только в пробелах, запятых или сокращениях слов.


Похожесть по whitespace и пунктуации считается элементарно с помошью разбиения строки на лексемы. Последовательность такая:

— берем список разделителей (пунктуация + whitespace);
— находим в строке все слова (слово — последовательность символов между разделителями).
— строим топ слов (по частоте)
— сравниваем 2 получаенных топа.

Собственно, проценты — мера, полученная от оцифровывания "пересечения" двух полученных последовательностей.

Проблема у этого алгоритма — перестановки одних и тех же слов составляют эквивалентные последовательности.

Для определения похожести также и по содержимому (т.е. с учетом взаимного расположения слов) можно использовать шинглы/супершинглы. Механизм это медленный, но верный. Он, правда, не прадназначен для вычисления близости, а может быть использован именно для поиска похожих. Вроде, это то, что требовалось изначально.

Также можно медитировать по поводу функции Левенштейна (особенно, если ее применить не к символам строки, а к выделенным словам).
Алексей Кирдин
Re[3]: Сравнение 2 строк и их % соотношение!
От: Dimonka Верблюд  
Дата: 25.05.05 12:57
Оценка:
Здравствуйте, Kaa, Вы писали:

Kaa>- берем список разделителей (пунктуация + whitespace);

Kaa>- находим в строке все слова (слово — последовательность символов между разделителями).
Kaa>- строим топ слов (по частоте)
Kaa>- сравниваем 2 получаенных топа.

Мне кажется здесь можно поступить как-то проще.. Например выделить словарь обоих строк и сделать цепочку из индексов слов по словарю для каждой строки. Единственное, что смущает, это как сравнивать эти цепочки и как выявлять сокращённые слова (или, например, слова с ошибками или с несколько разной транслитерацией букв)

Kaa>Собственно, проценты — мера, полученная от оцифровывания "пересечения" двух полученных последовательностей.


Kaa>Проблема у этого алгоритма — перестановки одних и тех же слов составляют эквивалентные последовательности.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.