Okay, ich habe also eine einfache Schnittstelle, die ich mit dem Django-Framework entworfen habe, das natürliche Spracheingabe von einem Benutzer nimmt und in Tabelle speichert.Verwenden von Java-Code im Django-Framework
Zusätzlich habe ich eine Pipeline, die ich mit Java unter Verwendung der cTAKES-Bibliothek erstellt habe, um die Erkennung von benannten Entitäten durchzuführen, d. H. Sie nimmt die vom Benutzer übermittelte Texteingabe und kennzeichnet sie mit relevanten UMLS-Tags.
Was ich tun möchte, ist die Eingabe von dem Benutzer gegeben, dann einmal, seine eingereicht, direkt in meine Java-CTAKES-Pipeline dann füttern die kommentierte Ausgabe zurück in die Datenbank.
Ich bin ziemlich neu in der Web-Entwicklung Seite von diesem und kann wirklich nichts über die Integration von Skripten in diesem Sinne finden. Wenn also jemand mich auf eine nützliche Ressource oder einfach in die richtige Richtung verweisen könnte, wäre das sehr hilfreich.
========================= UPDATE:
Okay, so habe ich herausgefunden, dass das subprocess das Modul ist, dass ich möchte in diesem Zusammenhang verwenden, und ich habe versucht, die Dokumentation einige einfache Code Implementierung basiert auf, aber ich bin ein
Exception Type: OSError
Exception Value: [Errno 2] No such file or directory
Exception Location: /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py in _execute_child, line 1335.
Ein kurzer Überblick bekommen, was ich versuche zu tun:
Dies ist Code habe ich in Ansichten. Seine Absicht ist, eine Texteingabe von dem Modellformular zu machen, POST das zu der DB und dann diese Eingabe in mein Skript, das eine XML-Datei erzeugt, die in einer anderen Spalte in der DB gespeichert ist. Ich bin sehr neu in Django, also tut es mir leid, wenn das eine einfache Lösung ist, aber ich konnte keine Dokumentation finden, die Django mit dem Unterprozess in Verbindung bringt, was hilfreich war.
def queries_create(request):
if not request.user.is_authenticated():
return render(request, 'login_error.html')
form = QueryForm(request.POST or None)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
p=subprocess.Popen([request.POST['post'], './path/to/run_pipeline.sh'])
p.save()
context = {
"title":"Create",
"form": form,
}
return render(request, "query_form.html", context)
Modell Code-Schnipsel:
class Query(models.Model):
problem/intervention = models.TextField()
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
UPDATE 2: Okay, so wird der Code nicht durch mehr bricht den subprocess Code wie unten
def queries_create(request):
if not request.user.is_authenticated():
return render(request, 'login_error.html')
form = QueryForm(request.POST or None)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
p = subprocess.Popen(['path/to/run_pipeline.sh'], stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
(stdoutdata, stderrdata) = p.communicate()
instance.processed_data = stdoutdata
instance.save()
context = {
"title":"Create",
"form": form,
}
return render(request, "query_form.html", context)
jedoch ändern, ich bin jetzt immer a "Konnte Hauptklasse pipeline.CtakesPipeline nicht finden oder laden", die ich nicht verstehe, da das Skript von der Shell in diesem Arbeitsverzeichnis einwandfrei ausgeführt wird. Dies ist das Skript, das ich mit Subprozess aufrufen möchte.
#!/bin/bash
INPUT=$1
OUTPUT=$2
CTAKES_HOME="full/path/to/CtakesClinicalPipeline/apache-ctakes-3.2.2"
UMLS_USER="####"
UMLS_PASS="####"
CLINICAL_PIPELINE_JAR="full/path/to/CtakesClinicalPipeline/target/
CtakesClinicalPipeline-0.0.1-SNAPSHOT.jar"
[[ $CTAKES_HOME == "" ]] && CTAKES_HOME=/usr/local/apache-ctakes-3.2.2
CTAKES_JARS=""
for jar in $(find ${CTAKES_HOME}/lib -iname "*.jar" -type f)
do
CTAKES_JARS+=$jar
CTAKES_JARS+=":"
done
current_dir=$PWD
cd $CTAKES_HOME
java -Dctakes.umlsuser=${UMLS_USER} -Dctakes.umlspw=${UMLS_PASS} -cp
${CTAKES_HOME}/desc/:${CTAKES_HOME}/resources/:${CTAKES_JARS%?}:
${current_dir}/${CLINICAL_PIPELINE_JAR} -
-Dlog4j.configuration=file:${CTAKES_HOME}/config/log4j.xml -Xms512M -Xmx3g
pipeline.CtakesPipeline $INPUT $OUTPUT
cd $current_dir
Ich bin mir nicht sicher, wie man diesen Fehler beheben kann, damit jede Hilfe geschätzt wird.
Ich bin überhaupt nicht mit cTAKES vertraut, also entschuldige ich mich, wenn dies eine ignorante Frage ist: Führen Sie diesen Java-Dienst bereits auf einer vorhandenen Maschine aus und möchten Daten von Ihrer Web-App dorthin leiten, oder suchen Sie Bereitstellen der Web-App und der Java-App? – souldeux
Ich möchte die Pipeline als Teil der Web-App bereitstellen. Ich möchte das Java-Skript intern verwenden. – jdv12