私は正しくないように見えるPythonでスクリプトに取り組んでいます。次の 2 つの入力を使用します。
- データファイル
- 停止ファイル
データ ファイルは、並べ替えられた 4 つのタブ区切りの列で構成されます。停止ファイルは、ソートされた単語のリストで構成されています。
スクリプトの目的は次のとおりです。
- データ ファイルの列 1 の文字列が「停止ファイル」の文字列と一致する場合、行全体が削除されます。
データ ファイルの例を次に示します。
abandonment-n after+n-the+n-a-j stop-n 1
abandonment-n against+n-the+ns leave-n 1
cake-n against+n-the+vg rest-v 1
abandonment-n as+n-a+vd require-v 1
abandonment-n as+n-a-j+vg-up use-v 1
停止ファイルの例を次に示します。
apple-n
banana-n
cake-n
pigeon-n
これが私がこれまでに持っているコードです:
with open("input1", "rb") as oIndexFile:
for line in oIndexFile:
lemma = line.split()
#print lemma
with open ("input2", "rb") as oSenseFile:
with open("output", "wb") as oOutFile:
for line in oSenseFile:
concept, slot, filler, freq = line.split()
nounsInterest = [concept, slot, filler, freq]
#print concept
if concept != lemma:
outstring = '\t'.join(nounsInterest)
oOutFile.write(outstring + '\n')
else:
pass
目的の出力は次のとおりです。
abandonment-n after+n-the+n-a-j-stop-n 1
abandonment-n against+n-the+ns-leave-n 1
abandonment-n as+n-a+vd-require-v 1
abandonment-n as+n-a-j+vg-up-use-v 1
洞察はありますか?
今のところ、私が得ている出力は次のとおりです。これは基本的に、私が行ってきたことの単なる印刷物です。
abandonment-n after+n-the+n-a-j stop-n 1
abandonment-n against+n-the+ns leave-n 1
cake-n against+n-the+vg rest-v 1
abandonment-n as+n-a+vd require-v 1
abandonment-n as+n-a-j+vg-up use-v 1
*** 私が試したもののいくつかは、まだ機能していません:
if concept != lemma:
私が最初に試した代わりにif concept not in lemma:
前述と同じ出力が生成されます。
また、関数が最初の入力ファイルを呼び出しているのではなく、コードに組み込んでいることにも疑問があります。
with open ("input2", "rb") as oSenseFile:
with open("tinput1", "rb") as oIndexFile:
for line in oIndexFile:
lemma = line.split()
with open("out", "wb") as oOutFile:
for line in oSenseFile:
concept, slot, filler, freq = line.split()
nounsInterest = [concept, slot, filler, freq]
if concept not in lemma:
outstring = '\t'.join(nounsInterest)
oOutFile.write(outstring + '\n')
else:
pass
これにより、空の出力ファイルが生成されます。
ここにあるように、別のアプローチも試しました:
filename = "input1.txt"
filename2 = "input2.txt"
filename3 = "output1"
def fixup(filename):
fin1 = open(filename)
fin2 = open(filename2, "r")
fout = open(filename3, "w")
for word in filename:
words = word.split()
for line in filename2:
concept, slot, filler, freq = line.split()
nounsInterest = [concept, slot, filler, freq]
if True in [concept in line for word in toRemove]:
pass
else:
outstring = '\t'.join(nounsInterest)
fout.write(outstring + '\n')
fin1.close()
fin2.close()
fout.close()
hereから適応されましたが、成功しませんでした。この場合、出力はまったく生成されません。
誰かがこのタスクを解決する際に間違っている方向に私を向けることができますか? サンプル ファイルは小さいですが、大きなファイルでこれを実行する必要があります。ご協力ありがとうございます。