Her satırda bir cümle içeren bir metin dosyası var. Her satırdaki dünyaları hunspell (-s seçeneği) kullanarak lemmatize etmek isterim. Her satırın ayrı ayrı olmasını istediğimden, tüm metin dosyasını hunspell'e göndermek mantıklı olmaz. Ardından bir satır göndermem ve her satır için hunspell çıkışına ihtiyacım var.SBCL/Common Lisp'de bir işlem giriş/çıkışı ile nasıl etkileşim kurabilirim?
How to process input and output streams in Steel Bank Common Lisp? yanıtlarını takiben, hunspell için bir satır daha ekledim ama her satır için hunspell çıktısını elde edemedim. Başka bir satır göndermeden önce hattı gönderen ve çıktıyı okuyan süreçle nasıl etkileşimde bulunulur? Bütün metin dosyasını okumak için
Benim şu anki kod
(defun parse-spell-sb (file-in)
(with-open-file (in file-in)
(let ((p (sb-ext:run-program "/opt/local/bin/hunspell" (list "-i" "UTF-8" "-s" "-d" "pt_BR")
:input in :output :stream :wait nil)))
(when p
(unwind-protect
(with-open-stream (o (process-output p))
(loop
:for line := (read-line o nil nil)
:while line
:collect line))
(process-close p))))))
kez
fazlasıdır, bu kod bana bütün metin dosyası için Hunspell çıktısını verir. Her giriş hattı için ayrı ayrı hunspell çıkışını almak istiyorum.
Herhangi bir fikrin var mı?
@wvxvw sure! Ama hunspell isteminde etkileşimli olarak kullanılabilir. Eğer "hunspell -s" ile başlarım. Bu yüzden CL ile etkileşimli çalışmayı başarabileceğimi düşündüm. En iyi yolun http://common-lisp.net/project/cffi/ olması gerektiği konusunda eminim, ancak hala onunla nasıl çalışacağımı öğrenmek zorundayım. –