Er að nota Notepad++ og þarf að finna tíðni orða í texta skjali, það er að segja að sjá þau orð sem koma fyrir oftast og fá þá listun yfir það.
Getið þið sagt mér hvernig hægt er að gera þetta í Notepad++ eða öðru forriti?
Þarf að finna tíðni orða í Notepad++
-
- Of mikill frítími
- Póstar: 1798
- Skráði sig: Þri 08. Nóv 2005 15:19
- Reputation: 387
- Staðsetning: Við tölvuna
- Staða: Ótengdur
Re: Þarf að finna tíðni orða í Notepad++
Eina sem ég finn er "Search > Find" og þar er takki sem segir "Count". Þar finnurðu allavega fjölda orða sem þú skrifar inn en ég veit því miður ekki hvernig þú finnur þau orð sem koma oftast fyrir.
Búinn að athuga með Word, hlýtur að vera hægt að gera þetta þar.
Búinn að athuga með Word, hlýtur að vera hægt að gera þetta þar.
Turn: Cooler Master Mastercase H500M Móðurborð: Asus ROG Maximus XI Hero
CPU: Intel Core i9-9900K 3.6GHz (Coffee Lake) GPU: EVGA GeForce RTX 2080 Super FTW3 Ultra Gaming
RAM: Corsair Vengeance LPX 32GB (4x8GB) DDR4 PC4-28800C18 3600MHz Quad Channel Kit
PSU: Corsair AX850 Titanium 80 Plus Titanium Modular SSD: Samsung 970 PRO 512GB M.2 2280 PCI-e 3.0 x4 NVMe
-
- 1+1=10
- Póstar: 1109
- Skráði sig: Lau 31. Okt 2009 21:34
- Reputation: 3
- Staðsetning: Akureyri
- Hafðu samband:
- Staða: Ótengdur
Re: Þarf að finna tíðni orða í Notepad++
Get smíðað svona forrit fyrir þig á sirka fimm mínútum.. eða látið þig fá pseude kódann ef þú getur sjálfur skrifað.
-
- 1+1=10
- Póstar: 1109
- Skráði sig: Lau 31. Okt 2009 21:34
- Reputation: 3
- Staðsetning: Akureyri
- Hafðu samband:
- Staða: Ótengdur
Re: Þarf að finna tíðni orða í Notepad++
Rauk í þetta.. meðan ég hlustað á Tubalar Bells með Mike nokkrum Oldfield!
Svona vinnur forritið:
Texta skráin
Svona vinnur forritið:
Texta skráin
Kóði: Velja allt
halló test bull þetta er hitt
bara þið eruð kannski er þetta líka bull eða hvað
er ekki kominn tími á að hætta þessu bulli og fara að sofa
Er ég nú orðinn fúll eða hvað
Kóði: Velja allt
unit UMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Typ_RecListi =
RECORD
Str_Ord : STRING;
I_Tidni : INTEGER;
END;
TForm1 =
class(TForm)
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Arr_Listi : ARRAY OF Typ_RecListi;
PROCEDURE Rada_Lista;
procedure Update_List (Str_Ord : SHORTSTRING);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
PROCEDURE TForm1.Rada_Lista;
{--------------------------------------------------------------------------}
PROCEDURE Swap (W_Indx : BYTE);
VAR
Tmp : Typ_RecListi;
BEGIN
Tmp := Arr_listi[W_Indx];
Arr_listi[W_Indx] := Arr_listi[W_Indx-1];
Arr_listi[W_Indx-1] := Tmp;
END;
VAR
W_Fjoldi,
W_Indx, W_Indx2 : WORD;
Bo_Swap : BOOLEAN;
Str_Fyrra,
Str_Seinna : SHORTSTRING;
BEGIN
W_Indx := 0;
Bo_Swap := TRUE;
W_Fjoldi := Length(Arr_listi) - 1;
WHILE (W_Indx < W_Fjoldi) AND (Bo_Swap) DO
BEGIN
W_Indx2 := W_Fjoldi;
Bo_Swap := FALSE;
WHILE W_Indx2 > W_Indx DO
BEGIN
IF (Arr_listi[W_Indx2].I_Tidni > Arr_listi [W_Indx2-1].I_Tidni) THEN
BEGIN
Bo_Swap := TRUE;
Swap (W_Indx2);
END;
Dec (W_Indx2);
END;
Inc (W_Indx);
END;
END;
{--------------------------------------------------------------------------}
procedure TForm1.Update_List (Str_Ord : SHORTSTRING);
var
Bo_Fann, Bo_Buid : BOOLEAN;
i : INTEGER;
BEGIN
Bo_Fann := FALSE;
Bo_Buid := FALSE;
i := 0;
IF (Length(Arr_Listi) > 0) THEN
REPEAT
Bo_Fann := Str_Ord = Arr_listi[i].Str_Ord;
IF NOT(Bo_Fann) THEN
BEGIN
Inc (i);
IF i = Length(Arr_Listi) THEN
Bo_Buid := TRUE;
END
UNTIL (Bo_Fann) OR (Bo_Buid);
IF (Bo_Fann) THEN
Inc (Arr_Listi [i].I_Tidni)
ELSE
BEGIN
SetLength(Arr_Listi, Length(Arr_Listi) + 1);
Arr_Listi[Length(Arr_Listi)-1].Str_Ord := Str_Ord;
Arr_Listi[Length(Arr_Listi)-1].I_Tidni := 1;
END;
END;
{--------------------------------------------------------------------------}
procedure TForm1.Button1Click(Sender: TObject);
var
Str_List : TSTRINGLIST;
i : INTEGER;
W_Pos : WORD;
Str_Ord : SHORTSTRING;
Str_Lina : SHORTSTRING;
begin
IF (FileExists (Edit1.Text)) THEN
BEGIN
Str_List := TSTRINGLIST.Create;
Str_List.LoadFromFile(Edit1.text);
FOR i := 0 TO Str_List.Count - 1 DO
BEGIN
Str_Lina := Str_List[i];
W_Pos := Pos (' ', Str_Lina);
WHILE (W_Pos <> 0) DO
BEGIN
Str_Ord := Copy (Str_Lina, 1, W_Pos - 1);
Delete (Str_Lina, 1, W_Pos);
Update_List (Str_Ord);
IF (Str_Lina <> '') THEN
W_Pos := Pos (' ', Str_Lina);
END;
IF (Str_Lina <> '') THEN
Update_List (Str_Lina);
END;
Str_List.Free;
Rada_Lista;
Memo1.Lines.Clear;
FOR i := 0 TO Length(Arr_Listi) - 1 DO
Memo1.Lines.Add(IntToStr(Arr_Listi[i].I_Tidni)+' '+ Arr_Listi[i].Str_Ord)
END
ELSE
ShowMessage ('Skjal finnst ekki.. ');
end;
end.
-
- Stjórnandi
- Póstar: 2783
- Skráði sig: Fös 29. Okt 2004 21:29
- Reputation: 126
- Staðsetning: FL410
- Hafðu samband:
- Staða: Ótengdur
Re: Þarf að finna tíðni orða í Notepad++
Garri skrifaði:Rauk í þetta.. meðan ég hlustað á Tubalar Bells með Mike nokkrum Oldfield!
Flottur!
Kísildalur.is þar sem nördin versla
-
Höfundur - FanBoy
- Póstar: 706
- Skráði sig: Fös 11. Nóv 2005 11:33
- Reputation: 2
- Staðsetning: Reykjavík
- Staða: Ótengdur
Re: Þarf að finna tíðni orða í Notepad++
ZiRiuS skrifaði:Eina sem ég finn er "Search > Find" og þar er takki sem segir "Count". Þar finnurðu allavega fjölda orða sem þú skrifar inn en ég veit því miður ekki hvernig þú finnur þau orð sem koma oftast fyrir.
Búinn að athuga með Word, hlýtur að vera hægt að gera þetta þar.
Athugaði með LibreOffice Writer, en fann ekkert, né extension.
Garri skrifaði:Rauk í þetta.. meðan ég hlustað á Tubalar Bells með Mike nokkrum Oldfield!
Flott og takk fyrir.
gardar skrifaði:http://vim.wikia.com/wiki/Word_frequency_statistics_for_a_file
Vim er fínn, takk fyrir.
Ég fann reyndar út að þetta virðist ekki vera rétta leiðin fyrir mig það sem ég var að spyrja um þar sem ég er með dálítið stóra skrá eða nokkra tugi þúsunda orða en er að leita að færri en hundrað orðum sem ég þekki ekki öll áður en ég byrja.
Það sem ég geri þá er að taka út réttu línurnar af nokkrum þúsunda í Notepad++ þar sem orðin koma fyrir og vinna með í LibreOffice Calc.