Dá se D7 vytvořit alias pro proceduru? – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dá se D7 vytvořit alias pro proceduru? – Delphi – Fórum – Programujte.comDá se D7 vytvořit alias pro proceduru? – Delphi – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
oxidián0
Grafoman
19. 1. 2023   #1
-
0
-

Ahoj. Tak mě to napadlo, mám proceduru, která načítá řádek na kterém je věta a rozparsuje to na slova. Udělám to s jedním souborem a udělám to s druhým souborem. Ale napadlo mě, že by bylo lepší mít alias. Takže první funkce se jmenuje například SplitFromFileA a v ní je uložený kód. A chci alias se jménem SplitFromFileB, a bude to dělat tu stejnou funkci... Jen název je jiný a říká mi přesně který soubor parsuju. Jasně, šlo by to udělat i obecně jako jednu funkci/proceduru SplitFromFile, ale jelikož píšu prográmek čistě jen na naparsování toho konkrétního souboru, resp. dvou souborů, které mají každý trošinku jinou sémantiku, tak jsem si řekl, proč to nevyšperkovat, pokud by to však šlo.

Nahlásit jako SPAM
IP: 94.113.178.–
JerryM0
Věrný člen
19. 1. 2023   #2
-
0
-

:) zajímavá filozofická myšlenka :) :) :) :) :) :)

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:f52d:9e23:e2ec:a234...–
oxidián0
Grafoman
19. 1. 2023   #3
-
0
-

A přece to jde...

...
var
  Form1: TForm1;

implementation

{$R *.dfm}

uses procedures;

var
 splitOntFile: procedure(Li: TStringList; Lo: TStringList; n:byte; var Sentence: TSENTENCEINFO)=splitTxtFile;
 getOntFile: function(WordsTriple: TStringList; Sentence: TSENTENCEINFO; forceOriginalSpace: Boolean): String = getTxtFile;

Thanks to.

Nahlásit jako SPAM
IP: 94.113.178.–
JerryM0
Věrný člen
19. 1. 2023   #4
-
0
-

:) :) :) :) :) :) :) :) :) :)

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:f52d:9e23:e2ec:a234...–
MilanL+1
Grafoman
24. 1. 2023   #5
-
0
-

No tohle je spíš zkušení co jde a co ne.

Definici souborů tam máš kde, v tom Sentence?

Pokud používáš pro soubory stejnou třídu, šlo by použít rozšíření třídy o fungce split a get a použít pak na soubory txtFile.split ontFile.split a to samé get (pozor na případnou kolizi názvů funkcí).

Jako známe tě, vždycky se snažíš jít složitější cestou.

Nahlásit jako SPAM
IP: 185.112.167.–
oxidián0
Grafoman
24. 1. 2023   #6
-
0
-

Jen pro zajímavost, deklarace v souboru procedur - ale přepsal jsem to.

procedure splitTxtFile(Li: TStringList; Lo: TStringList; n:byte; var Sentence: TWCOMPACT);
function getTxtFile(Words: TStringList; Sentence: TWCOMPACT;forceOriginalSpace: Boolean): String;

Definice v souboru konstant

type TSPACEDIRECTIONS = (WJNULL, WJLEFT, WJRIGHT);
type TSPACEFEED  = array [0..99] of Word;
type TWCOMPACT = record
  first: TSPACEDIRECTIONS; // space before first word
  mid: TSPACEFEED;
  last: TSPACEDIRECTIONS; // space after last word
end;

V podstatě potřebuji znát hlavně počet mezer mezi slovy, abych rozparsovanou větu mohl taky složit v případě, že chci do věty přidat slovo. Smysl programu který dělám: rozparsovat text ve dvou souborech, porovnat, a doplnit původní soubor o text, kterých chybí, s tím, že dostanu nějakou hlášku, kde je změna, abych to měl tu editaci souboru pod kontrolou. Rozparsování věty je nutné kvůli porovnání souboru a následné editaci.

Ale paběrkuji. Teď mě z rozjímání vytrhl tenhle skvělý program spacy:

https://explosion.ai/demos/displacy?text=She%20gave%20him%20a%20pen&model=en_core_web_sm&cpu=1&cph=1

https://spacy.io/models

https://course.spacy.io/en/chapter1

je tam lekce chapter1 až chapter4.

Ano správně! Začal jsem se učit python. Uf. To bych do sebe nikdy neřekl, že se na stará kolena budu učit další jazyk :D.

Umí to rozplitovat a analyzovat větu tak, abych zjistil její stavbu. Ale bohužel tam není čeština, jen angličtina, němčina a další zahraniční jazyky.

Nahlásit jako SPAM
IP: 94.113.187.–
JerryM0
Věrný člen
25. 1. 2023   #7
-
0
-

hm zajímavý, ale rozparsovat větu znamená hledat mezery mezi slovy ne ? takže je jedno jestli ten algoritmus napíšeš ty nebo ho někde stáhneš z internetu. A hledání chybějících slov je taky poměrně standardní úkon. I když je teda pravda, že je to dosti časově náročná věc.

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:859e:16b7:805c:6014...–
MilanL+1
Grafoman
25. 1. 2023   #8
-
0
-

#6 oxidián
Řekl bych, že je pro ně čeština na analýzu trošku těžká proto jí moc nedělají, viz translatory před érou strojového učení, Dnes translatory využívají výkonné servery se strojovým učením, které mají za sebou dlouhodobou analýzu velkého množství textů a jejich lidských překladů do různých jazyků.

Nahlásit jako SPAM
IP: 91.139.9.–
oxidián0
Grafoman
25. 1. 2023   #9
-
0
-

#8 MilanL
V nové verzi mají slovinštinu. Slovinština je taky složitější jazyk. Bych řekl, když patří ke slovanským jazykům.

Nahlásit jako SPAM
IP: 94.113.175.–
oxidián0
Grafoman
25. 1. 2023   #10
-
0
-

#7 JerryM
Pokud jsem použil slovo rozplitovat, tak jsem myslel nejen použít mezeru jako oddělovač. Já analyzuju kolik mezer je mezi skupinami znaků. Skupina první jsou znaky [a-zA-Z] a apostrof pokud je mezi těmito znaky uzavřen. Skupina druhá jsou jiné znaky, které nejsou mezera (tab v txt souboru není). První a druhou skupinu nazývám "slovem".

Např. Pavel, vítěz. Obsahuje 4 "slova":

Pavel , vítěz .

Ale pak mám ještě uloženo, které "slovo" je skutečně slovo a které ne. Pavel vítěz, jsou dvě slova. Celkem 4 "slova".

Spacy pak používá jinou terminologii. Myslím, že tam parsování znamená nejen rozsekat na slova, ale taky provést POS analýzu, a analýzu o stavbě věty. Ale přesně to nevím, mají tam taky komponentu tagger a ještě jsem neprošel celý ten výukový kurz.

Nahlásit jako SPAM
IP: 94.113.175.–
JerryM0
Věrný člen
25. 1. 2023   #11
-
0
-

#10 oxidián
aha takže se vracíš do 3. a 4. a 5. třídy ZŠ a budeš určovat co je podmět a přísudek ... moc hezké :)

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:859e:16b7:805c:6014...–
oxidián0
Grafoman
25. 1. 2023   #12
-
0
-

#11 JerryM
Ne to nedělám já. To dělá NLP spacy.

Nahlásit jako SPAM
IP: 94.113.175.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý