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.
Fórum › Delphi
Dá se D7 vytvořit alias pro proceduru?
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.
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.
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://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.
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.
#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ů.
#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.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Jak vytvořit Exe pro c++ — založil Ar3us
Jak vytvořit program pro MC68332 — založil remmidemmi
Jak vytvořit klikací mapu pro background CSS??? — založil adosl
Můžu VS2008 vytvořit app pro Win Mobile 2003? — založil mard
VBA Excel - jak vytvořit userform pro vkládání obrázků — založil Česťa