fst-compiler-utf8 - ອອນລາຍໃນຄລາວ

ນີ້ແມ່ນຄໍາສັ່ງ fst-compiler-utf8 ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


fst-compiler, fst-compiler-utf8 - ສອງ compilers ສໍາລັບໂຄງການ SFST

ສະຫຼຸບສັງລວມ


fst-compiler ໄຟລ໌ໄວຍາກອນ [ output-file ]
fst-compiler-utf8 ໄຟລ໌ໄວຍາກອນ [ output-file ]

OPTIONS


-c ເກັບຮັກສາ transducer ໃນຮູບແບບທີ່ຫນາແຫນ້ນທີ່ຖືກນໍາໃຊ້ໂດຍ fst-infl2.

-l ເກັບຮັກສາ transducer ໃນຮູບແບບ lowmem.

-s ປ່ຽນພື້ນຜິວແລະຊັ້ນການວິເຄາະຂອງ transducer. ທ່ານ​ຕ້ອງ​ໄດ້​ນໍາ​ໃຊ້​ສະ​ຫຼັບ​ນີ້​ໃນ​
ສັ່ງ​ນໍາ​ໃຊ້​ fst-infl (fst-infl2, fst-infl3) ສໍາລັບການຜະລິດແທນທີ່ຈະເປັນການວິເຄາະ.

ລາຍລະອຽດ


fst-compiler ເປັນ compiler ສໍາລັບໂຄງການ transducer ຈໍາກັດລັດ. ມັນສ້າງການຫຼຸດຫນ້ອຍລົງ
finite state transducer ທີ່ສາມາດໃຊ້ກັບ fst-mor, fst-infl, fst-ພິມ​, fst ປຽບທຽບ,
fst-parse, ແລະ fst-lattic. ຕົວແທນ transducer ຫນາແຫນ້ນທີ່ຖືກສ້າງຂຶ້ນດ້ວຍ
ທຸງ -c, ສະຫນັບສະຫນູນໂດຍ fst-infl2, ລົດໄຟ fst, ແລະ fst-match. ຄວາມຊົງຈໍາທີ່ມີປະສິດທິພາບ
ການເປັນຕົວແທນຂອງ transducer ທີ່ຖືກສ້າງຂຶ້ນດ້ວຍທຸງ -l, ແມ່ນສະຫນັບສະຫນູນພຽງແຕ່ໂດຍ fst-
infl3.

ການໂຕ້ຖຽງຂອງໂປຣແກຣມທໍາອິດແມ່ນຊື່ຂອງໄຟລ໌ທີ່ມີໂປແກມ transducer.
ພາສາການຂຽນໂປລແກລມຖືກອະທິບາຍຂ້າງລຸ່ມນີ້. ການໂຕ້ຖຽງທີສອງແມ່ນຊື່ຂອງໄຟລ໌
ເຊິ່ງ transducer ຜົນໄດ້ຮັບຈະຖືກຂຽນໃນຮູບແບບຖານສອງ. ຖ້າການໂຕ້ຖຽງທີສອງແມ່ນ
ຫາຍໄປ, ຜົນໄດ້ຮັບຈະຖືກຂຽນໃສ່ stdout.

fst-compiler-utf8 ແຕກຕ່າງຈາກ fst-compiler ພຽງ​ແຕ່​ໃນ​ການ​ເຂົ້າ​ລະ​ຫັດ​ຕົວ​ອັກ​ສອນ​. fst-compiler-
utf8 ສະຫນັບສະຫນູນການເຂົ້າລະຫັດ UTF8 ຂອງໄຟລ໌ແຫຼ່ງໃນຂະນະທີ່ fst-compiler ແມ່ນ​ຈະ​ຖືກ​ນໍາ​ໃຊ້​ສໍາ​ລັບ​ການ​
ລະຫັດຕົວອັກສອນ 8-Bit ຄື latin1 ເຊິ່ງເປັນສ່ວນຂະຫຍາຍຂອງລະຫັດ ASCII. ຂໍ້ມູນ
ກ່ຽວກັບການເຂົ້າລະຫັດຈະຖືກເກັບໄວ້ໃນໄຟລ໌ transducer ແລະຖືກນໍາໃຊ້ໂດຍໂຄງການ SFST ອື່ນໆ.

ເອກະສານ ຮູບແບບ


ໂຄງການ transducer ປະກອບດ້ວຍລໍາດັບ (ທາງເລືອກ) ຂອງ ຫນັງສື ແລະ ຕົວແປ
ຄໍານິຍາມຕາມດ້ວຍອັນດຽວ transducer ການສະແດງອອກ ເຊິ່ງກໍານົດຜົນໄດ້ຮັບ
ຕົວແປງສັນຍານ.

ຕົວອັກສອນ

ຄໍານິຍາມຂອງຕົວອັກສອນປະກອບດ້ວຍຄໍາສໍາຄັນ ALPHABET ຕິດຕາມດ້ວຍ = ແລະຕົວປ່ຽນບາງອັນ
ການສະແດງອອກ eg

ALPHABET = [az]:[AZ]

ຄໍາ​ສັ່ງ​ນີ້ redefines ຫນັງ​ສື​ເປັນ​ຊຸດ​ຂອງ​ຄູ່​ສັນ​ຍາ​ລັກ​ທີ່​ເກີດ​ຂຶ້ນ​ໃນ​ການ​
ການຫັນປ່ຽນຂອງ transducer ໄດ້. ການປະກົດຕົວຂອງຜູ້ປະຕິບັດການສອງລະດັບ, ຜູ້ປະຕິບັດການປະຕິເສດແລະ
ໄລຍະເວລາທີ່ບໍ່ໄດ້ອ້າງອີງຕ້ອງຖືກນຳໜ້າໂດຍຄຳນິຍາມຂອງຕົວໜັງສືສະເໝີ.

Variables

ມີສອງປະເພດທີ່ແຕກຕ່າງກັນຂອງຕົວແປ. ສັນຍາລັກ ທີ່ກໍານົດໄວ້ ຕົວແປ ຖືກປິດລ້ອມດ້ວຍ hash
ສັນຍາລັກ (#) ແລະເອົາລໍາດັບສັນຍາລັກ (ເບິ່ງຂ້າງລຸ່ມນີ້) ເປັນຄ່າ:

#UC# = AZ
#LC# = az

Transducer ຕົວແປ ຖືກປິດລ້ອມດ້ວຍເຄື່ອງໝາຍເງິນໂດລາ ແລະໃຊ້ຕົວສະແດງຕົວປ່ຽນເປັນ
ຄຸນຄ່າ:

$MAP$ = [az]:[AZ]+
$MAP$ = [#LC#]:[#UC#]+

ຕົວແປທີ່ຊື່ເລີ່ມຕົ້ນດ້ວຍສັນຍາລັກ `=' ແມ່ນພິເສດ ຂໍ້ຕົກລົງ ຕົວແປ. ຖ້າເປັນ
ຕົວແປຂໍ້ຕົກລົງເກີດຂຶ້ນຫຼາຍກວ່າຫນຶ່ງຄັ້ງໃນການສະແດງອອກ transducer, ມັນຈະມີສະເຫມີ
ມູນຄ່າດຽວກັນ. ພິຈາລະນາໂຄງການ transducer ຕໍ່ໄປນີ້:

$=1$ = [abc]
$=1$ X $=1$

ຕົວປ່ຽນຜົນໄດ້ຮັບຮັບຮູ້ສາຍ aXa, bXb, ແລະ cXc. ພຽງແຕ່ transducers acyclic
(ເຊັ່ນ: transducers ທີ່ມີກໍານົດຂອບເຂດກໍານົດຂອງ string mappings) ສາມາດຖືກມອບຫມາຍໃຫ້ຕົກລົງ
ຕົວແປ

ສັນຍາລັກ

ສັນຍາລັກແມ່ນຄືກັນ

- ລັກ​ສະ​ນະ​ດຽວ​ຄື A s 5​,

- ຕົວອັກສອນທີ່ອ້າງອີງເຊັ່ນ \* ຫຼື \_,

- ສັນ​ຍາ​ລັກ​ຫຼາຍ​ຕົວ​ອັກ​ສອນ​ເຊັ່ນ​ ຫຼື (ຊຶ່ງ​ເປັນ​ສະ​ເຫມີ​ໄປ​
enclosed ໃນວົງເລັບມຸມ) ຫຼື

- backslash ຕາມດ້ວຍຕົວເລກທີ່ເປັນລະຫັດຕົວເລກຂອງ
ລັກ​ສະ​ນະ​ທີ່​ກໍາ​ນົດ​ໄວ້​

- ສັນຍາລັກ null <>.

ລໍາດັບສັນຍາລັກ

ລໍາດັບສັນຍາລັກແມ່ນລໍາດັບຂອງລັກສະນະ, ສັນຍາລັກຫຼາຍຕົວອັກສອນແລະລັກສະນະ
ranges, eg az \. .

ຊ່ວງສັນຍາລັກ

ຊ່ວງສັນຍາລັກແມ່ນຄືກັນ

- ສັນ​ຍາ​ລັກ​ດຽວ​

- ລຳດັບສັນຍາລັກທີ່ຕິດຢູ່ໃນວົງເລັບສີ່ຫຼ່ຽມຄື [A-Za-z] ຫຼື

- ລຳ​ດັບ​ສັນ​ຍາ​ລັກ​ເລີ່ມ​ຕົ້ນ​ດ້ວຍ ^ ແລະ​ປິດ​ລ້ອມ​ໃນ​ວົງ​ເລັບ​ສີ່​ຫຼ່ຽມ​ມົນ​ຄື [^A-Za-z]
(ການກໍານົດການເສີມຂອງ [a-zA-Z]) ຫຼື

- ໄລ​ຍະ​ເວ​ລາ (ຊຶ່ງ​ເປັນ​ຕົວ​ແທນ​ສັນ​ຍາ​ລັກ​ໃດ​ຫນຶ່ງ​ຈາກ​ຕົວ​ອັກ​ສອນ​)

ການສະແດງອອກຂອງ transducer

ການສະແດງອອກຂອງ transducer (TE) ຖືກກໍານົດ recursively ດັ່ງຕໍ່ໄປນີ້:

- ຄູ່ຂອງສອງຊ່ວງສັນຍາລັກທີ່ແຍກດ້ວຍຈໍ້າສອງເມັດແມ່ນ TE.

[az]:[aZ]

- ຊ່ວງສັນຍາລັກດຽວຄື [az] ແມ່ນ TE.
ມັນເປັນຮູບແບບສັ້ນສໍາລັບ [az]:[az].

- ສອງ​ລຳ​ດັບ​ສັນ​ຍາ​ລັກ​ທີ່​ປິດ​ລ້ອມ​ໃນ​ວົງ​ເລັບ​ແລະ​ແຍກ​ອອກ​ໂດຍ​ຈໍ້າ​ສອງ​ເມັດ​ແມ່ນ​
TE. {a[bc]}:{def} ເທົ່າກັບ a:db:e <>:f | a:dc:e <>:f.

- XY ແມ່ນ TE ຖ້າ X ແລະ Y ແມ່ນ TEs.
(ຊ່ອງຫວ່າງຖືກລະເລີຍເວັ້ນເສຍແຕ່ວ່າພວກມັນຖືກອ້າງອີງ.)

- (X) ແມ່ນ TE ຖ້າ X ແມ່ນ TE.

- X op ແມ່ນ TE ແມ່ນ X ແມ່ນ TE ແລະ op ແມ່ນ * (ຕົວປະຕິບັດການດາວຂອງ Kleene), +
(ຕົວປະຕິບັດການບວກຂອງ Kleene), ຫຼື ? (ຕົວປະຕິບັດການທາງເລືອກ)

- op X ແມ່ນ TE ແມ່ນ X ແມ່ນ TE ແລະ op ແມ່ນ ! (ຜູ້ປະຕິບັດການປະຕິເສດ), ^
(ຕົວປະຕິບັດການສະກັດພາສາເປົ້າຫມາຍ), _ (ຕົວປະຕິບັດການສະກັດພາສາແຫຼ່ງ), ຫຼື ^_
(ຜູ້ປະຕິບັດການປ່ຽນແຫຼ່ງແລະເປົ້າຫມາຍ).

- X op Y ແມ່ນ TE ແມ່ນ X ແລະ Y ແມ່ນ TEs ແລະ op ແມ່ນທັງສອງ & (ການສົມທົບ
operator), | (disjunction operator), || (ຕົວປະຕິບັດການອົງປະກອບ), ຫຼື - (ການລົບ
ຜູ້ປະກອບການ)

- L x op y R ແມ່ນ TE ຖ້າ L ແລະ R ແມ່ນ TEs, x ແລະ y ແມ່ນຊ່ວງສັນຍາລັກແລະ
op ແມ່ນ => (ການຈໍາກັດສອງລະດັບ), <= (ການບີບບັງຄັບສອງລະດັບ), ຫຼື <=> (ສອງລະດັບ.
ຂໍ້​ຈໍາ​ກັດ​ແລະ​ການ​ບັງ​ຄັບ​)​.

- X op L__R ແມ່ນ TE ຖ້າ X, L ແລະ R ແມ່ນ TEs ແລະ op ແມ່ນ ^-> (ຂຶ້ນເທິງ.
ການປ່ຽນແທນ), _-> (ປ່ຽນແທນທາງລຸ່ມ), //> (ປ່ຽນຊ້າຍ) ຫຼື \-> (ຂວາ.
ທົດແທນ). ນອກຈາກນັ້ນ, L ແລະ R ຈະຕ້ອງກໍານົດ automata (ເຊັ່ນ: ແຜນທີ່ສາຍຂອງພວກມັນ
ໃສ່​ຕົນ​ເອງ). ຜູ້ປະກອບການເຫຼົ່ານີ້ສອດຄ່ອງກັບ Karttunen's replace operator. ຖ້າ
ລູກສອນແມ່ນຕິດຕາມດ້ວຍເຄື່ອງຫມາຍຄໍາຖາມ (?), ການທົດແທນຈະກາຍເປັນທາງເລືອກ.

- X << l ແມ່ນ TE ຖ້າ X ແມ່ນ TE, ແລະ l ແມ່ນຮູບແບບໃດນຶ່ງ
a ຫຼືຮູບແບບ a:b ທີ່ a ແລະ b ເປັນຕົວອັກສອນດຽວ ຫຼືສັນຍາລັກ. ຜົນໄດ້ຮັບແມ່ນ ກ
transducer ບ່ອນທີ່ l ໄດ້ freely inserted ເຂົ້າໄປໃນ X. transducer ab << c ສໍາລັບການຍົກຕົວຢ່າງແມ່ນ
ເທົ່າກັບ c*ac*bc*.

- X op Y L1__R2, ... , LN__RN ເປັນ TE ຖ້າ X, Y, L1 ຜ່ານ LN ແລະ R1
ຜ່ານ RN ແມ່ນ TEs, ແລະ op ແມ່ນ => (ຂໍ້ຈໍາກັດທົ່ວໄປ), <= (ການບີບບັງຄັບທົ່ວໄປ), ^=>
(ການຈຳກັດພື້ນຜິວທົ່ວໄປ), ^<= (ການບີບບັງຄັບພື້ນຜິວທົ່ວໄປ), ^<=> (ພື້ນຜິວທົ່ວໄປ
ຂໍ້​ຈໍາ​ກັດ​ແລະ​ການ​ບີບ​ບັງ​ຄັບ​), _=> (ຂໍ້​ຈໍາ​ກັດ​ເລິກ​ໂດຍ​ທົ່ວ​ໄປ​)​, _<= (ການ​ບີບ​ບັງ​ຄັບ​ເລິກ​ໂດຍ​ທົ່ວ​ໄປ​)​,
_<=> (ຂໍ້​ຈໍາ​ກັດ​ເລິກ​ໂດຍ​ທົ່ວ​ໄປ​ແລະ​ການ​ບີບ​ບັງ​ຄັບ​)​. (ຜູ້ປະຕິບັດການເຫຼົ່ານີ້ໄດ້ຖືກປະຕິບັດດັ່ງຕໍ່ໄປນີ້
ຄໍາແນະນໍາໂດຍ Anssi Yli-Jyra.)

- "fname" ແມ່ນ TE. compiler ອ່ານໄຟລ໌ທີ່ມີຊື່ fname ແລະ turns
ມັນເຂົ້າໄປໃນຕົວປ່ຽນຂອງຮູບແບບ line1|line2|line3|... ເຊິ່ງ linex ແມ່ນເສັ້ນ x-th ຂອງ
ໄຟລ໌. ຕົວອັກສອນທັງໝົດນອກເໜືອໄປຈາກ : ແລະ \ ຖືກຕີຄວາມໝາຍຕາມຕົວໜັງສື (ເຊັ່ນວ່າ ບໍ່ແມ່ນ
ຜູ້ປະກອບການ). TE ນີ້ຖືກນໍາໃຊ້ໂດຍທົ່ວໄປເຊັ່ນ: ເພື່ອອ່ານລາຍການ morpheme ຈາກໄຟລ໌.

- " " ເປັນ TE. compiler ອ່ານ transducer ກ່ອນລວບລວມຈາກ
ໄຟລ໌ທີ່ມີຊື່ fname. ນີ້

ຄຸນນະສົມບັດເພີ່ມເຕີມ

ຄຳເຫັນເລີ່ມຕົ້ນດ້ວຍສັນຍາລັກ % ແລະຂະຫຍາຍໄປຮອດທ້າຍແຖວ. ຫວ່າງເປົ່າຖືກລະເລີຍ
ເວັ້ນເສຍແຕ່ວ່າພວກເຂົາຖືກອ້າງອີງ. ການສະແດງອອກຢຸດຢູ່ທ້າຍແຖວ ເວັ້ນເສຍແຕ່ວ່າທ້າຍແຖວ
ແມ່ນນຳໜ້າດ້ວຍ backslash. ຄໍາສັ່ງ

#ລວມທັງ "fname"

ສາມາດໃຊ້ເພື່ອໃສ່ລະຫັດແຫຼ່ງຈາກໄຟລ໌ທີ່ມີຊື່ fname. ຄໍາສັ່ງ

RE >> "fname"

ເກັບຮັກສາການສະແດງອອກປົກກະຕິ RE ໃນ fname ໄຟລ໌. ຄໍາສັ່ງ

#ໃຊ້ hopcroft

ບອກຜູ້ລວບລວມຂໍ້ມູນໃຫ້ໃຊ້ Hopcroft minimization algorithm ຈາກນີ້ໄປ, ແລະ

# ໃຊ້ຄ່າເລີ່ມຕົ້ນ

ສະຫຼັບກັບໄປໃຊ້ວິທີຫຼຸດຂັ້ນຕົ້ນ (Brzozowski). ຄໍາສັ່ງ

EXAMPLE


ນີ້ແມ່ນຕົວຢ່າງຂອງໂຄງການ transducer ງ່າຍດາຍ. ສົມມຸດວ່າໄຟລ໌ "adj-stems"
ມີສອງແຖວ

ງ່າຍ
late
ຂະຫນາດໃຫຍ່

transducer ນີ້ຈະວິເຄາະຮູບແບບຄໍານາມຢ່າງຖືກຕ້ອງງ່າຍ, ງ່າຍ, ງ່າຍທີ່ສຸດແລະຊ້າ,
ຕໍ່ມາ, ແລະຫລ້າສຸດ.

ALPHABET = [a-zA-Z] y:ie:<> :<>

$R$ = y<=>i ( :<> e)

$R2$ = e<=><> ( :<> e)

$R$ = $R$ & $R2$

$Stems$ = "adj-stems"

$S$ = $Stems$ ( :<>| :{er}| :{est})

$S$ || $R$

ອອກ STATUS


fst-compiler ຕອບຄືນ 0 ເວັ້ນເສຍແຕ່ມີຂໍ້ຜິດພາດເກີດຂຶ້ນ.

ໃຊ້ fst-compiler-utf8 ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net



ລ່າສຸດ Linux ແລະ Windows ໂຄງການອອນໄລນ໌