检查用户输入字符串以避免“惰性键入”

2024-04-19 05:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Matlab(或Python)中有一个GUI接口,它要求用户对某个事件发表评论。该注释很重要,并加载到数据库中,以便将来跟踪事件。这一评论必须详细。你知道吗

我希望避免懒惰的用户输入,例如:

  • “”
  • “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”
  • “萨法”
  • “测试”
  • “x”
  • “………”
  • “qwerty”
  • 等等

如果检测到如下“延迟输入”,则请求重新输入:

valid_input = 0;
while valid_input~=1
    valid_input = 0;
    user_input = '';
    user_input=InputTextRequest('Insert significant mandatory comment');
    switch user_input
        case {'exit','quit'}
            out = Popup('PROCEDURE ABORTED','PROCEDURE HAS BEEN ABORTED BY USER');
            return
        otherwise
            if CheckCommentValidity( user_input)~=1
                msg={'Comment field have to be significant:', [user_input ' is not valid, add details.']};
                out = Popup('NOTE NOT ACCEPTED',msg);
                valid_input = 0;
            else
                valid_input = 1;
            end
    end
end

问题是检测user_input是否有效。你知道吗

我提供了一个函数,用于验证输入字符串中的4个不同参数:

  • 唯一字符数n_unique
  • 字符总数n_tot
  • 空间数n_space
  • 元音的数目n_vowels

我想知道我可以在这些参数之间做什么检查来确定字符串的有效性?我是意大利人,所以我知道我的语言使用的元音比英语要多,但不管怎样,是否存在一个描述“正确”输入的参数/阈值列表?你知道吗

现在我用这个函数来粗略估计参数阈值。你知道吗

function valid = CheckCommentValidity( user_input)
    valid=0;

    %parameters
    n_unique = length(unique(strrep(user_input,' ',''))); %number of unique chars excluded spaces
    n_tot = length(user_input); %number of chars
    n_space = sum(user_input==' '); %number of spaces
    n_space = sum(ismember( user_input, 'aeiou'));

    %sub checks
    conformity_check(1) = n_unique > 8;
    conformity_check(2) = n_tot >= 10;
    conformity_check(3) = n_space >= 1;
    conformity_check(4) = n_vowels >= 4;

    %main check
    if sum(conformity_check==1) == length(conformity_check)
        valid=1;
    else
        valid=0;
    end

end

编辑

一些澄清:

  • 这个用户请求评论阶段遵循这样一个阶段:用户可以在几个预定类型的事件中进行选择,但前提是选择了UNKNOWN
  • 基本上,只有在预定列表中找不到事件类型时,用户才能完成此阶段
  • 我想避免拼写检查/字典API方法,因为Matlab/Python中有内置的bo支持
  • 机器学习方法可能有用,但仅适用于参数阈值的“离线”校准
  • 我认为语言Shannon熵方法不能解决这个问题,因为char样本非常少,我不需要区分语言
  • 也许n_vowels/n_tot比率可以是一个解决方案
  • 当然,这种检查不能避免带有“标准”结构但毫无意义的注释,例如This comment is useless, sorry。你知道吗

Tags: 用户语言input参数check评论事件space