标签: text-processing

如何在带有SED或AWK的行中添加双引号?

我有一个单词列表

name,id,3
Run Code Online (Sandbox Code Playgroud)

我需要像这样双引号

"name,id,3"
Run Code Online (Sandbox Code Playgroud)

我试过sed的/.*/\"&\"/g',得到了

"name,id,3
Run Code Online (Sandbox Code Playgroud)

只有一个双引号

我也试过awk {print"\""$ 1"\""},结果完全相同需要帮助

shell awk command-line text-processing sed

19
推荐指数
4
解决办法
4万
查看次数

否定句子的算法

我想知道是否有人熟悉算法句子否定的任何尝试.

例如,给出一个像"这本书好"的句子,提供任意数量的替代句子,意思相反,如"这本书不好",甚至"这本书不好".

显然,以高精度完成这一点可能超出了当前NLP的范围,但我确信已经有一些关于这个问题的工作.如果有人知道任何工作,请指点我一些文件?

text-processing nlp linguistics negation

18
推荐指数
2
解决办法
4761
查看次数

文本摘要评估 - BLEU与ROUGE

通过两个不同的汇总系统(sys1和sys2)和相同的参考汇总的结果,我用BLEU和ROUGE对它们进行了评估.问题是:sys1的所有ROUGE分数都高于sys2(ROUGE-1,ROUGE-2,ROUGE-3,ROUGE-4,ROUGE-L,ROUGE-SU4 ......)但是sys1的BLEU分数较低比sys2的BLEU得分(相当多).

所以我的问题是:ROUGE和BLEU都是基于n-gram来衡量系统摘要和人类摘要之间的相似之处.那么为什么评价结果会有差异呢?ROUGE和BLEU解释这个问题的主要区别是什么?

任何意见和建议将不胜感激!谢谢!

text-processing nlp machine-translation bleu rouge

18
推荐指数
3
解决办法
1万
查看次数

如何从文本数据中获取单词?

我正在使用大型文本数据集处理预测问题.我正在实施Bag of Words Model.

什么是最好的方式来获得一揽子文字?现在,我有各种单词的tf-idf,单词的数量太大,无法用于进一步的分配.如果我使用tf-idf标准,那么获取单词包的tf-idf阈值应该是多少?或者我应该使用其他一些算法.我正在使用python.

python text-processing machine-learning

17
推荐指数
3
解决办法
4万
查看次数

用于识别文本文件中的编程语言的代码

我应该编写代码,当给出一个文本文件(源代码)作为输入时,将输出哪种编程语言.这是问题的最基本定义.更多限制如下:

  • 我必须用C++编写.
  • 应该识别各种语言 - html,php,perl,ruby,C,C++,Java,C#......
  • 误报(错误识别)的数量应该低 - 输出"未知"而不是错误结果.(它将在概率列表中,例如未知:100%,见下文)
  • 输出应该是代码知道的每种语言的概率列表,因此如果它知道C,Java和Perl,则输出应该是例如:C:70%,Java:50%,Perl:30%(注意有不需要概率总和高达100%)
  • 它应该具有良好的准确度/速度比(速度更受青睐)

如果能够以一种方式编写代码,即添加用于识别的新语言相当容易并且仅涉及为该特定语言添加"设置/数据",那将是非常好的.我可以使用任何可用的东西 - 启发式,神经网络,黑魔法.任何东西.我甚至被允许使用现有的解决方案,但是:解决方案必须是免费的,开源的并允许商业用途.它必须以易于集成的源代码或静态库的形式出现 - 没有DLL.但是,我更喜欢编写自己的代码或只使用其他解决方案的片段,我厌倦了整合其他代码.最后一点:也许你们中的一些人会建议FANN(快速人工神经网络库) - 这是我唯一不能使用的东西,因为这是我们使用ALREADY的东西,我们想要替换它.

现在的问题是:你将如何处理这样的任务,你会做什么?有任何建议如何实现这个或使用什么?

编辑:根据评论和答案,我必须强调一些我忘记的事情:速度是非常关键的,因为这将获得数千个文件,并且应该快速回答,所以查看一千个文件应该为所有这些文件生成答案最多几秒钟(文件的大小当然很小,每个几KB).所以试图编译每一个都是不可能的.问题是,我真的想要每种语言的概率 - 所以我宁愿知道该文件可能是C或C++,但它是bash脚本的可能性非常低.由于代码混淆,评论等我认为寻找100%准确的代码是一个坏主意,事实上并不是这个目标.

c++ algorithm text-processing language-recognition

16
推荐指数
2
解决办法
2718
查看次数

如何快速(以C为单位)读取和解析带有数字的文本文件?

最后一次更新:我的同学用来fread()将整个文件的大约三分之一读成一个字符串,这可以避免内存不足.然后处理此字符串,将此字符串分隔到您的数据结构中.请注意,您需要关心一个问题:在此字符串的末尾,这些最后几个字符可能不能包含一个整数.考虑一种检测这种情况的方法,这样您就可以将这些字符与下一个字符串的前几个字符连接起来.每个数字对应于数据结构中的不同变量.您的数据结构应该非常简单,因为每次将数据插入到一个数据结构中时,它都非常慢.大部分时间花在将数据插入数据结构中.因此,处理这些数据的最快方法是:使用fread()将此文件读入字符串,将此字符串分隔为不同的一维数组.例如(只是一个例子,不是来自我的项目),我有一个文本文件,如:

72     24      20
22     14      30
23     35      40
42     29      50
19     22      60
18     64      70
 .
 .
 .
Run Code Online (Sandbox Code Playgroud)

每行是一个人的信息.第一栏是指人的年龄,第二栏是他的存款,第二栏是他妻子的年龄.然后我们用fread()这个文本文件读成字符串,然后我用stroke()它来分隔它(你可以用更快的方式将它分开).不要使用数据结构来存储分离的数据!我的意思是,不要这样做:

struct person
{
    int age;
    int deposit;
    int wife_age;
};
struct person *my_data_store;
my_data_store=malloc(sizeof(struct person)*length_of_this_array);
//then insert separated data into my_data_store
Run Code Online (Sandbox Code Playgroud)

不要使用数据结构来存储数据!存储数据的最快方法是这样的:

int *age;
int *deposit;
int *wife_age;

age=(int*)malloc(sizeof(int)*age_array_length);
deposit=(int*)malloc(sizeof(int)*deposit_array_length);
wife_age=(int*)malloc(sizeof(int)*wife_array_length);
// the value of age_array_length,deposit_array_length and wife_array_length will be known by using `wc -l`.You can use wc -l …
Run Code Online (Sandbox Code Playgroud)

c performance parsing text-processing readfile

16
推荐指数
2
解决办法
4862
查看次数

如何计算单词出现在文件中或某个范围内的次数

有时我想看看在文件或代码块中调用某个函数的次数.你是怎样做的?我正在使用Vim 7.2.

我认为你必须使用!wc或其他一些.

vi vim text-processing

15
推荐指数
2
解决办法
1万
查看次数

如何使用vim,sed或其他类似工具在大文件(100万行)中连接成对的连续行?

我需要将每个第二行的内容移动到上面的行,这样line2的数据就在line1的旁边,逗号或空格分隔的工作.

输入:

line1
line2
line3
line4
Run Code Online (Sandbox Code Playgroud)

输出:

line1 line2
line3 line4
Run Code Online (Sandbox Code Playgroud)

我一直用vim进行简单的录音,但是当我告诉它做了10万次时,vim似乎崩溃了...我想也许sed会是一个很好的选择,但不知道怎么做我想要的或者有更好的选择?

每行只包含1个数值,我只有一百万行......

vim text-processing sed large-files

15
推荐指数
5
解决办法
9431
查看次数

PHP中的平衡自动换行(最小粗糙度)

我将在PHP中创建一个自动换行算法.我想在最多m个字符的n行中分割小块文本(短语)(n没有给出,所以会有所需的行数).特点是线条长度(以字符为单位)必须尽可能多地平衡线条.

输入文本示例:

How to do things
Run Code Online (Sandbox Code Playgroud)

输出错误(这是正常的自动换行行为),m = 6:

How to
do
things
Run Code Online (Sandbox Code Playgroud)

期望的输出,总是m = 6:

How 
to do 
things
Run Code Online (Sandbox Code Playgroud)

有没有人对如何实现这个功能有任何建议或指导?基本上,我正在搜索两个或三个(尽可能多)长线上的漂亮的印刷短语.


更新:似乎我正在寻找一个最小的粗糙度自动换行算法.但我找不到真正的编程语言中的任何实现(任何人,然后我可以用PHP转换它).


更新2:我为此开始了赏金.是否有可能在任何程序语言中都不存在最小粗糙度算法的任何公共实现?我需要一些可以翻译成程序指令的方式编写的东西.我现在所能找到的只是一个(通用)方程式,但需要一个最佳的搜索程序.我还要感谢一种只能近似最佳搜索算法的实现.

php algorithm text-processing word-wrap

15
推荐指数
2
解决办法
3583
查看次数

解析文档时的Apache Tika和字符限制

可以请任何人帮我解决一下吗?

它可以这样做

   Tika tika = new Tika();
   tika.setMaxStringLength(10*1024*1024);
Run Code Online (Sandbox Code Playgroud)

但如果你不直接使用Tika,就像这样:

ContentHandler textHandler = new BodyContentHandler();
Metadata metadata = new Metadata();
Parser parser = new AutoDetectParser();

ParseContext ps = new ParseContext();
for (InputStream is : getInputStreams()) {
    parser.parse(is, textHandler, metadata, ps);
    is.close();
    System.out.println("Title: " + metadata.get("title"));
    System.out.println("Author: " + metadata.get("Author"));
}
Run Code Online (Sandbox Code Playgroud)

没有办法设置它,因为你没有与之交互WriteOutContentHandler.顺便说一下,它-1默认设置为没有限制.但由此产生的限制是100000个字符.

/**
 * The maximum number of characters to write to the character stream.
 * Set to -1 for no limit.
 */
private final int writeLimit;

/** …
Run Code Online (Sandbox Code Playgroud)

java text-processing apache-tika

14
推荐指数
1
解决办法
7423
查看次数