【发布时间】:2016-04-22 01:21:35
【问题描述】:
给定 10,000,000,000 行,每行大约 20-50 个单词,例如:
Anarchism is often defined as a political philosophy which holds the state to be undesirable , unnecessary , or harmful .
However , others argue that while anti-statism is central , it is inadequate to define anarchism .
Therefore , they argue instead that anarchism entails opposing authority or hierarchical organization in the conduct of human relations , including , but not limited to , the state system .
Proponents of anarchism , known as " anarchists " , advocate stateless societies based on non - hierarchical free association s. As a subtle and anti-dogmatic philosophy , anarchism draws on many currents of thought and strategy .
Anarchism does not offer a fixed body of doctrine from a single particular world view , instead fluxing and flowing as a philosophy .
There are many types and traditions of anarchism , not all of which are mutually exclusive .
Anarchist schools of thought can differ fundamentally , supporting anything from extreme individualism to complete collectivism .
Strains of anarchism have often been divided into the categories of social and individualist anarchism or similar dual classifications .
Anarchism is often considered a radical left-wing ideology , and much of anarchist economics and anarchist legal philosophy reflect anti-authoritarian interpretations of communism , collectivism , syndicalism , mutualism , or participatory economics .
Anarchism as a mass social movement has regularly endured fluctuations in popularity .
The central tendency of anarchism as a social movement has been represented by anarcho-communism and anarcho-syndicalism , with individualist anarchism being primarily a literary phenomenon which nevertheless did have an impact on the bigger currents and individualists have also participated in large anarchist organizations .
Many anarchists oppose all forms of aggression , supporting self-defense or non-violence ( anarcho-pacifism ) , while others have supported the use of some coercive measures , including violent revolution and propaganda of the deed , on the path to an anarchist society .
Etymology and terminology The term derives from the ancient Greek ἄναρχος , anarchos , meaning " without rulers " , from the prefix ἀν - ( an - , " without " ) + ἀρχός ( arkhos , " leader " , from ἀρχή arkhē , " authority , sovereignty , realm , magistracy " ) + - ισμός ( - ismos , from the suffix - ιζειν , - izein " - izing " ) . "
Anarchists " was the term adopted by Maximilien de Robespierre to attack those on the left whom he had used for his own ends during the French Revolution but was determined to get rid of , though among these " anarchists " there were few who exhibited the social revolt characteristics of later anarchists .
There would be many revolutionaries of the early nineteenth century who contributed to the anarchist doctrines of the next generation , such as William Godwin and Wilhelm Weitling , but they did not use the word " anarchist " or " anarchism " in describing themselves or their beliefs .
Pierre-Joseph Proudhon was the first political philosopher to call himself an anarchist , making the formal birth of anarchism the mid-nineteenth century .
Since the 1890s from France , the term " libertarianism " has often been used as a synonym for anarchism and was used almost exclusively in this sense until the 1950s in the United States ; its use as a synonym is still common outside the United States .
On the other hand , some use " libertarianism " to refer to individualistic free-market philosophy only , referring to free-market anarchism as " libertarian anarchism " .
假设我有一个由一个或多个单词组成的字典术语列表,例如:
clinical anatomy
clinical psychology
cognitive neuroscience
cognitive psychology
cognitive science
comparative anatomy
comparative psychology
compound morphology
computational linguistics
correlation
cosmetic dentistry
cosmography
cosmology
craniology
craniometry
criminology
cryobiology
cryogenics
cryonics
cryptanalysis
crystallography
curvilinear correlation
cybernetics
cytogenetics
cytology
deixis
demography
dental anatomy
dental surgery
dentistry
philosophy
political philosophy
我需要找到所有包含这些术语的句子,然后将术语中单词之间的空格替换为下划线。
比如文中有这样一句话:
Anarchism is often defined as a political philosophy which holds the state to be undesirable , unnecessary , or harmful .
文本中有字典术语political philosophy。所以这句话的输出需要是:
Anarchism is often defined as a political_philosophy which holds the state to be undesirable , unnecessary , or harmful .
我可以这样做:
dictionary = sort(dictionary, key=len) # replace the longest terms first.
for line in text:
for term in dictionary:
if term in line:
line = line.replace(term, term.replace(' ', '_'))
假设我有 10,000 个字典术语 (D) 和 10,000,000,000 个句子 (S),使用简单方法的复杂度将是 O(D*S),对吗? 是否有更快、更简单的方法来获得相同的结果?
有没有办法用每行下划线的术语替换所有带空格的术语?这将有助于避免内部循环。
如果先使用whoosh 之类的东西对文本进行索引,然后查询索引并替换术语会更有效?我仍然需要O(1*S) 之类的东西来进行替换,对吧?
解决方案不需要在 Python 中,即使是 grep/sed/awk 之类的 Unix 命令技巧也可以,只要 subprocess.Popen-able 即可。
如果我错了,请纠正我的复杂性假设,请原谅我的菜鸟。
给定一句话:
这是一个包含多个短语的句子,我需要 替换为带下划线的短语,例如社会政治 哲学分支下的政治哲学哲学 和一些计算语言学,其中认知语言学和 心理认知语言学伴随语言学出现
假设我有字典:
cognitive linguistics
psycho cognitive linguistics
socio political philosophy
political philosophy
computational linguistics
linguistics
philosophy
social political philosophy
输出应如下所示:
这是一个包含多个短语的句子,我需要 替换为带下划线的短语,例如 分支下的social_political_philosophy和political_philosophy 哲学和一些计算语言学 认知语言学和心理认知语言学与 语言学
我们的目标是使用 100 亿行的文本文件和 10-100k 短语的字典来做到这一点。
【问题讨论】:
-
词典词条可以由两个以上的词组成吗?
-
是的。一个或多个单词的长度未知。
-
每行可以出现多个短语?
-
是的,短语可以嵌套,如果可以,则尽可能取最大,例如
political_philosophyvs social_political_philosophy`,选择后者。 -
所以如果我们得到一个最大的匹配我们就停止?
标签: python regex search dictionary replace