Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 文本处理以查找字符串的共现_Python_C++_Regex_Machine Learning_Nlp - Fatal编程技术网

Python 文本处理以查找字符串的共现

Python 文本处理以查找字符串的共现,python,c++,regex,machine-learning,nlp,Python,C++,Regex,Machine Learning,Nlp,我需要处理一系列空格分隔的字符串,即文本句子。”“共现”是指两个标记(或单词)出现在同一个句子上。我需要列出所有同时出现的单词,当它们至少出现在两行(两句话)上时。列表必须按顺序排列并隔开 输入示例: tag1 tag2
 tag1 tag3
 tag2 tag4 tag3
 tag2 tag3 输出应为: tag2 tag3 我不能假设输入将适合内存。 我所知道的是不会有超过10000个标签。 我的问题是,读取整个输入并创建一个包含所有单词的矩阵,然后在出现共现时勾选出来,这样的蛮力是行不通的

我需要处理一系列空格分隔的字符串,即文本句子。”“共现”是指两个标记(或单词)出现在同一个句子上。我需要列出所有同时出现的单词,当它们至少出现在两行(两句话)上时。列表必须按顺序排列并隔开

输入示例:

tag1 tag2


tag1 tag3


tag2 tag4 tag3


tag2 tag3

输出应为:

tag2 tag3

我不能假设输入将适合内存。 我所知道的是不会有超过10000个标签。 我的问题是,读取整个输入并创建一个包含所有单词的矩阵,然后在出现共现时勾选出来,这样的蛮力是行不通的

一定有我没有找到的算法或方法。 我非常感谢可能有用的算法或函数的提示/链接或参考。我理解C、C++、Matlab、Python

有点繁琐:

import re
tags = list(set(input_string.split()))
tag_length = len(tags)
for i in xrange(tag_length - 1):
  for j in xrange(tag_length - 2 - i):
    tag1, tag2 = tags[i], tags[i + j + 1]
    matches = re.findall(r'\b{0}\b.+\b{1}\b'.format(tag1, tag2), input_string)
    if len(matches) > 1:
       print tag1, tag2

为什么tag1没有输出?第一行和第二行都有

all_tags_generator = (set(line.rstrip().split()) for line in sys.stdin)  # or change sys.stdin to open("your file")

all_tags = set()
for new_tags in all_tags_generator:
    realy_new_tags = new_tags.difference(all_tags)
    for tag in realy_new_tags:
        print(tag, end=" ")
    all_tags.update(intersection)

tag1不输出,因为它不会与另一个标记一起出现两次-这是“共现”规则,即tag1出现在第1行和第2行,但有两个不同的标记(tag2和tag3),因此不能出现在输出上。