【问题标题】:Identifying words in perl在 perl 中识别单词
【发布时间】:2019-03-17 02:00:47
【问题描述】:

我正在尝试浏览将单词拼凑在一起的文件列表并将单词分开。

my @file_list = (
    'myfirstperlfile.pl',
    'mashpotatorecipes.pl',
    'badhaircuts.pl',
    'jonisntverygoodatsoftball.pl',
    'thatnewcomedianislol.pl',
);

我的列表可以用任何东西来描述,但为了示例,它可能看起来像这样。

my @delineated_file_list = (
    'my first perl file',
    'mash potato recipes',
    'bad haircuts',
    'jon isnt very good at soft ball',
    'that new comedian is lol',
);        

在我的特殊情况下,文件很多,因此查找静态词并不理想。

perl 最好知道 my,first,perl 和 file 是单独的词吗?我还担心识别缩写、拼写错误或假词。

【问题讨论】:

  • 这样做的目的是什么——为什么需要将脚本名称分解成单词?在这种情况下,对错误的容忍度是多少?你不能在没有任何其他线索的情况下将一堆粘在一起的词正确地解析成语言。
  • 我有两个文件,一个插件文件和它打算用于的文件。插件文件以使用它的文件命名。例如,cgi-bin/folder/new_folder/abc_script.pl 将使用名为 cgibin_folder_newfolder_abcscript.pm 的插件。有些文件没有遵循格式,所以我想编写一个测试,查看 cgibin_folder_newfolder_abcscript.pm 并查看其父脚本是否存在。
  • 啊,我明白了。我不认为需要 language 来做到这一点(这是一件好事,因为这很难:)。当您选择需要搜索其祖先的文件时,请对预期父目录中的文件列表中的每个文件名使用正则表达式。毕竟,您正在搜索匹配的单词,对吗?正则表达式可以以您需要的所有灵活性做到这一点,而无需进行语言分析。
  • 一个简单的示例:my $patt = qr/abc.*script/i; for (@files) { if (/$patt/) { ... } },您可以在其中构建 $patt 以考虑预期的变化。

标签: arrays string perl


【解决方案1】:

如果不开发 AI,您不太可能找到完美的解决方案。但首先你需要一个知道英语单词的模块,所以请查看Lingua::EN 命名空间。 Lingua::EN::Segment 看起来与您的用例相似。

【讨论】:

  • 这5秒短片总结得最好的原因:youtube.com/watch?v=raka8Gxmqwc
  • 严肃地说,不会有完美的解决方案:island.plis landisland
  • 首先,这很有趣。第二,可爱。 :)
猜你喜欢
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 2017-05-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多