2017-08-03 3 views
0

Je suis en train d'exécuter le référentiel à partir du lien suivant:
https://github.com/JafferWilson/test-programSBCL -common Lisp Erreur

Je reçois cette erreur:

sbcl --script paraphrasing.lisp 
Unhandled SB-KERNEL:SIMPLE-PACKAGE-ERROR in thread #<SB-THREAD:THREAD 
                "main thread" RUNNING 
                 {100399C6D3}>: 
    The name "USER" does not designate any package. 

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {100399C6D3}> 
0: ((LAMBDA NIL :IN SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX)) 
1: (SB-IMPL::CALL-WITH-SANE-IO-SYNTAX #<CLOSURE (LAMBDA NIL :IN SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX) {10039E3C1B}>) 
2: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<CLOSURE (LAMBDA NIL :IN SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX) {10039E3BEB}>) 
3: (PRINT-BACKTRACE :STREAM #<SB-SYS:FD-STREAM for "standard error" {10039A22B3}> :START 0 :FROM :INTERRUPTED-FRAME :COUNT NIL :PRINT-THREAD T :PRINT-FRAME-SOURCE NIL :METHOD-FRAME-STYLE NIL) 
4: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-KERNEL:SIMPLE-PACKAGE-ERROR "The name ~S does not designate any package." {10039E1643}> #<unavailable argument>) 
5: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-KERNEL:SIMPLE-PACKAGE-ERROR "The name ~S does not designate any package." {10039E1643}>) 
6: (INVOKE-DEBUGGER #<SB-KERNEL:SIMPLE-PACKAGE-ERROR "The name ~S does not designate any package." {10039E1643}>) 
7: (ERROR SB-KERNEL:SIMPLE-PACKAGE-ERROR :PACKAGE "USER" :FORMAT-CONTROL "The name ~S does not designate any package." :FORMAT-ARGUMENTS ("USER")) 
8: (SB-INT:%FIND-PACKAGE-OR-LOSE "USER") 
9: (SB-INT:FIND-UNDELETED-PACKAGE-OR-LOSE "USER") 
10: ((LAMBDA NIL :IN "/home/aims/paraphrasing/paraphrasing.lisp")) 
11: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SETQ *PACKAGE* (SB-INT:FIND-UNDELETED-PACKAGE-OR-LOSE "USER")) #<NULL-LEXENV>) 
12: (SB-INT:SIMPLE-EVAL-IN-LEXENV (IN-PACKAGE "USER") #<NULL-LEXENV>) 
13: (EVAL-TLF (IN-PACKAGE "USER") 0 NIL) 
14: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (IN-PACKAGE "USER") 0) 
15: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) (IN-PACKAGE "USER") :CURRENT-INDEX 0) 
16: (SB-C::%DO-FORMS-FROM-INFO #<CLOSURE (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) {10039A7ECB}> #<SB-C::SOURCE-INFO {10039A7E83}> SB-C::INPUT-ERROR-IN-LOAD) 
17: (SB-INT:LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /home/aims/paraphrasing/paraphrasing.lisp" {10039A4703}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading") 
18: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-SYS:FD-STREAM for "file /home/aims/paraphrasing/paraphrasing.lisp" {10039A4703}> NIL) 
19: (LOAD #<SB-SYS:FD-STREAM for "file /home/aims/paraphrasing/paraphrasing.lisp" {10039A4703}> :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT) 
20: ((FLET SB-IMPL::LOAD-SCRIPT :IN SB-IMPL::PROCESS-SCRIPT) #<SB-SYS:FD-STREAM for "file /home/aims/paraphrasing/paraphrasing.lisp" {10039A4703}>) 
21: ((FLET #:WITHOUT-INTERRUPTS-BODY-146 :IN SB-IMPL::PROCESS-SCRIPT)) 
22: (SB-IMPL::PROCESS-SCRIPT "paraphrasing.lisp") 
23: (SB-IMPL::TOPLEVEL-INIT) 
24: ((FLET #:WITHOUT-INTERRUPTS-BODY-82 :IN SAVE-LISP-AND-DIE)) 
25: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE)) 

unhandled condition in --disable-debugger mode, quitting 

Veuillez, me aider à résoudre ce que le programme fonctionne efficacement.

+0

Remplacez le nom obsolète "USER" avec "CL-USER". – sds

+0

Après avoir remplacé par votre suggestion: Je reçois l'erreur: 'Lock sur le paquet SB-EXT violé lors de la définition de WORD en tant que structure dans package COMMON-LISP-USER. Voir aussi: Le manuel SBCL, Node "Package Locks" ' –

+0

Je lance la commande comme:' sbcl --script paraphrase.lisp' –

Répondre

4

Pour SBCL:

Créer un package et utiliser uniquement le package Common Lisp:

(defpackage "PARAPHRASING" 
    (:use "COMMON-LISP")) 

(in-package "PARAPHRASING") 

Remplacer tous DEFCONSTANT définir des listes avec DEFPARAMETER

(defparameter +bad-single-pos-paraphrasings+ 
    (mapcar #'intern '("TO" "DT" "CC" "IN" "WDT" "POS" "PRP"))) 
(defparameter +input-paren-types+ 
    (list (list "[[" (intern "NN")) (list "((" (intern "VB")))) 
;; Stuff with no alphabetic chars is ignored in any case 
(defparameter +auxiliaries+ (mapcar #'intern '("DT" "IN" "TO"))) 
;; Lengths taken for rules 
(defparameter +context-lens+ '(1)) 

Marque Assurez-vous que la valeur de retour de NREVERSE est utilisée

(defun extract-paraphrases1 (pair rule) 
    (labels (;; Find all positions where prfx is in seq. 
      (find-prefix-positions (prfx seq) 
      (if (null (first prfx)) 
       ;; Must be at the beginning. 
       (and (pos-match-prefix (rest prfx) seq) (list -1)) 
       (pos-sub-positions prfx seq))) 
      ;; Find all positions where sffx is in seq - after some point. 
      (find-suffix-positions (skip sffx seq) 
      (let ((lst (nthcdr skip seq))) 
       (if (null (first sffx)) 
       ;; a trick - nreverse both lists, not expensive 
       (let* ((slen (length (rest sffx))) 
         (sffx (nreverse (rest sffx))) 
         (lst (nreverse lst)) 
         (m? (pos-match-prefix sffx lst))) 
        ;; restore things 
        (setf sffx (nreverse sffx)) ; <- use the result 
        (setf lst (nreverse lst)) ; <- use the result 
... 

STAGIAIRE

Tous les appels à STAGIAIRE doivent utiliser le nom du package "PARAPHRASING" comme second paramètre. De cette façon, les symboles sont toujours créés dans le bon paquet.

Utilisez

* (paraphrasing::co-train "20000leagues-tagged-pairs-roots.txt") 
Reading input... 
Done, 6275 sentences read. 
========== Iteration #1/10 ========== 
Learning context rules... 
    ...6250 left 
    ...6000 left 

... 
+0

J'ai fait les changements nécessaires mais je pourrais voir la sortie comme vous l'avez mentionné. Je n'ai rien après avoir couru 'sbcl --script paraphrase.lisp' ai-je raté quelque chose –

+0

Le fichier ne fait rien. Vous devez appeler la fonction (voir mon exemple) quelque part. Par exemple, vous pouvez l'ajouter à la fin du code source en utilisant le chemin d'accès correct pour votre fichier de données. –

+1

en utilisant "sbcl --script ..." à des fins de développement n'est pas très utile. Le développement Common Lisp fonctionne le mieux de manière interactive, et non en l'utilisant comme script runner. Une fois que le code fonctionne, vous pouvez vous assurer que vous pouvez l'appeler comme un script, mais c'est la deuxième étape. –