feat: add jsonl export learn, nsfw. delete txt export
This commit is contained in:
parent
8be039e8cf
commit
df693bfa43
1 changed files with 68 additions and 50 deletions
|
@ -22,8 +22,14 @@ import (
|
|||
|
||||
var date time.Time = time.Now()
|
||||
|
||||
type jsonlData struct {
|
||||
type textJSONLData struct {
|
||||
Text string `json:"text"`
|
||||
Persona string `json:"persona,omitempty"`
|
||||
}
|
||||
|
||||
type learnJSONLData struct {
|
||||
Command string `json:"command"`
|
||||
Result string `json:"result"`
|
||||
}
|
||||
|
||||
func getDate() string {
|
||||
|
@ -87,30 +93,11 @@ func saveFileToJSON(path, name string, data any) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func saveFileToTXT(path, name string, data []databases.Text) error {
|
||||
var content string
|
||||
|
||||
for _, data := range data {
|
||||
content += data.Text + "\n"
|
||||
}
|
||||
|
||||
f, err := os.Create(fmt.Sprintf("%s/%s.txt", path, name))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer f.Close()
|
||||
|
||||
_, err = f.WriteString(content)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func saveFileToJSONL(path, name string, data []jsonlData) error {
|
||||
func saveFileToJSONL(path, name string, data any) error {
|
||||
var content string
|
||||
|
||||
switch data := data.(type) {
|
||||
case []textJSONLData:
|
||||
for _, data := range data {
|
||||
bytes, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
|
@ -118,6 +105,15 @@ func saveFileToJSONL(path, name string, data []jsonlData) error {
|
|||
}
|
||||
content += string(bytes) + "\n"
|
||||
}
|
||||
case []learnJSONLData:
|
||||
for _, data := range data {
|
||||
bytes, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
content += string(bytes) + "\n"
|
||||
}
|
||||
}
|
||||
|
||||
f, err := os.Create(fmt.Sprintf("%s/%s.jsonl", path, name))
|
||||
if err != nil {
|
||||
|
@ -143,7 +139,7 @@ func ExportData(n *commando.Node) error {
|
|||
return err
|
||||
}
|
||||
|
||||
if fileType != "txt" && fileType != "json" && fileType != "jsonl" {
|
||||
if fileType != "json" && fileType != "jsonl" {
|
||||
return fmt.Errorf("파일 형식은 txt또는 json또는 jsonl이여야 해요")
|
||||
}
|
||||
|
||||
|
@ -166,6 +162,10 @@ func ExportData(n *commando.Node) error {
|
|||
|
||||
wg.Add(3)
|
||||
|
||||
if fileType == "jsonl" {
|
||||
fmt.Println("NOTE: 파일 형식이 'jsonl'인 경우 일부데이터만 추출 됩니다.")
|
||||
}
|
||||
|
||||
// 머핀 데이터 추출
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
@ -211,21 +211,11 @@ func ExportData(n *commando.Node) error {
|
|||
ch <- err
|
||||
return
|
||||
}
|
||||
} else if fileType == "txt" {
|
||||
fmt.Println("NOTE: 파일 형식이 'txt'인 경우 머핀 데이터만 txt형식으로 추출되고, 나머지는 json으로 추출됩니다.")
|
||||
err = saveFileToTXT(path, "muffin", data)
|
||||
if err != nil {
|
||||
ch <- err
|
||||
return
|
||||
}
|
||||
} else if fileType == "jsonl" {
|
||||
var newData []jsonlData
|
||||
|
||||
fmt.Println("NOTE: 파일 형식이 'jsonl'인 경우 머핀 데이터만 jsonl형식으로 추출되고, 나머지는 json으로 추출됩니다.")
|
||||
fmt.Println("NOTE: 파일 형식이 'jsonl'인 경우 일부데이터만 추출 됩니다.")
|
||||
var newData []textJSONLData
|
||||
|
||||
for _, data := range data {
|
||||
newData = append(newData, jsonlData{data.Text})
|
||||
newData = append(newData, textJSONLData{data.Text, ""})
|
||||
}
|
||||
|
||||
err = saveFileToJSONL(path, "muffin", newData)
|
||||
|
@ -273,11 +263,25 @@ func ExportData(n *commando.Node) error {
|
|||
return
|
||||
}
|
||||
|
||||
if fileType == "json" {
|
||||
err = saveFileToJSON(path, "nsfw", data)
|
||||
if err != nil {
|
||||
ch <- err
|
||||
return
|
||||
}
|
||||
} else if fileType == "jsonl" {
|
||||
var newData []textJSONLData
|
||||
|
||||
for _, data := range data {
|
||||
newData = append(newData, textJSONLData{data.Text, data.Persona})
|
||||
}
|
||||
|
||||
err = saveFileToJSONL(path, "nsfw", newData)
|
||||
if err != nil {
|
||||
ch <- err
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("nsfw 데이터 추출 완료")
|
||||
}()
|
||||
|
@ -310,11 +314,25 @@ func ExportData(n *commando.Node) error {
|
|||
return
|
||||
}
|
||||
|
||||
if fileType == "json" {
|
||||
err = saveFileToJSON(path, "learn", data)
|
||||
if err != nil {
|
||||
ch <- err
|
||||
return
|
||||
}
|
||||
} else if fileType == "jsonl" {
|
||||
var newData []learnJSONLData
|
||||
|
||||
for _, data := range data {
|
||||
newData = append(newData, learnJSONLData{data.Command, data.Result})
|
||||
}
|
||||
|
||||
err = saveFileToJSONL(path, "learn", newData)
|
||||
if err != nil {
|
||||
ch <- err
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("지식 데이터 추출 완료")
|
||||
}()
|
||||
|
|
Loading…
Reference in a new issue