簡體   English   中英

如何使用節點將流數據附加到文件中的特定位置並進行檢索?

[英]How to append streaming data to a specific location in a file using node and retrieving?

我有一個機器人可以幫助網站管理員,我想添加人工智能。 這基於馬爾可夫鏈。 問題是我希望所有數據字符串都由機器人記錄下來,然后在馬爾可夫鏈中使用。 本質上,機器人是從它從用戶交談中收集的聊天數據中學習。

我目前所擁有的是:

var fs = require('fs');
var logit = fs.createWriteStream('Data.js', {'flags': 'a'});

chatEvent(function(data) {
    data.message = stringFix(data.message); //just fixes punctuation
    a = JSON.stringify(data.message);
    logit.write(a + ',');
});

這將創建消息列表(摘要),如下所示:

"Shall I play Ellie Goulding - Hanging On (Sound Remedy Remix)",
"Or Mango - Sayonara",
"mmn mangos",
"What should I choose",
"only because you're thinking food",
"how can you expect a woman to be happy if a man persists in treating her like a perfectly normal human being",

我想要做的是這樣做:

module.exports = {
    data: [
        "Shall I play Ellie Goulding - Hanging On (Sound Remedy Remix)",
        "Or Mango - Sayonara",
        "mmn mangos",
        "What should I choose",
        "only because you're thinking food",
        "how can you expect a woman to be happy if a man persists in treating her like a perfectly normal human being",
    ]
}

以便所有消息都保存在data:[]數組中。 這樣,我可以在使用機器人到達機器人時調用數據的靜態視圖,方法是:

Data = require('./Data').data;
sentences = [];
sentences = Data;

有沒有辦法做到這一點? 還可以從Data.js文件實時流式傳輸,以便在將其發送到文件時將所有新消息添加到句子數組中,這樣我的機器人就可以不斷學習。 如果沒有,我可以進行設置,以便將所有消息都保存到data.js文件中並推送到句子文件中,這樣,如果漫游器崩潰/重新連接,它可以從data.js文件中重新加載數據,然后從停下來的地方撿起來。

您可以“初始化” js文件,然后插入數據。實現可能是這樣的。

var fs = require("fs");
var fcontent = 'module.exports = {data: []}';

fs.writeFile('Data.js', fcontent, function (err) {
    var offset= 25;
    var logit = fs.createWriteStream('Data.js', {flags: 'r+',start:offset});

    function beforeRead(cbk){
        logit.write("]};");
        cbk();
    }

    function message(msg){
        logit.write( (offset==25) ? ('"'+msg+'"') : (',"'+msg+'"') );
        offset+=msg.length;
    } 
    //chatEvent
    message("I'm a bot");
    message("I can't hurt you");
    beforeRead(function(){
        //here we have a correct syntax js file
    });
});

即使您可以在if中注入初始寫入,但也會失去可讀性。 謹慎行事,這可能很危險(字符串,捕獲錯誤等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM