照会辞書でエラー提案を生成する

照会辞書でエラー提案を生成する

編集:テキストフィールドのスペースをよりよく処理するために、ファイルがtsvに変更されました。

次の形式のcsvファイルが2つあります。

ファイル1:availableText.csv(サイズが大きくなる可能性があります)

「id1」、「text1-1」
、「id1」、「text1-2」、
「id1」、「text1-3」、
「id1」、「text1-4」
、「id2」、「text2-1」、
「id2」、「text2-2」
「id2」、「text2-3」
「id2」、「text2-4」
...

ファイル2:エラーtext.csv

「id1」、「texta」、
「id2」、「textb」、
「id3」、「textc」、
「id4」、「textd」
...

の各行に対してwrongText.csv同じIDに対して利用可能なテキスト項目をフィルタリングし、利用可能な最も適切なオプションを提案するtre-agrep関数使いたいです。

たとえば、次のようになりますid1

tre-agrep -B 'texta'(text1-1:4から)| tr "\n" "$"
('text1-2$text1-4' などの結果を生成)

必要な出力ファイルは次のとおりです。

"id1", "texta", "text1-2$text1-4",
"id2", "textb", "text2-1$text2-3$text2-4"

メモ:

  1. CSVは任意の形式に変換できますが、テキストにスペースを含めることができます(特殊文字を除く)。
  2. IDに特殊文字とutf-8が含まれています。
  3. 速度は重要ではありません(少なくとも今は)

答え1

結果は次のとおりです。

for pattern in $(awk '{print $3}' wrong.csv) ; do tre-agrep -B $pattern available.csv | tr "\n" "$"; echo ; done  
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$

読みやすさの向上:

for pattern in $(awk '{print $3}' wrong.csv) 
do
  tre-agrep -B $pattern available.csv | tr "\n" "$"
  echo
done  

そんなこと?

答え2

入力ファイルをtsvに変更し、次の解決策を使用しました(最初の答えからインスピレーションを得ました)

echo "" > wrong_variables.tmp  
while read line  
do  
    var_template=`echo $line | cut -f2`  
    var_parameter=`echo $line | cut -f3`  

    #TODO order by template and cache grep output  
    grep "${var_template}" templ2.tmp  | cut -f2 > tmpfile  
    var_suggest=`tre-agrep -B "$var_parameter" tmpfile | tr "\n" "$"`  

    echo $line \\t $var_suggest >> wrong_variables.tmp
done < $OUTPUT_RAW

関連情報