写一段代码计算关键词频率
时间: 2024-01-15 19:02:51 浏览: 28
好的,以下是一个简单的 Python 代码,可以计算文本中关键词的频率:
```python
from collections import Counter
# 输入文本
text = "This is a sample text for calculating keyword frequency. This text contains multiple keywords such as sample, calculating, and frequency."
# 定义关键词列表
keywords = ["sample", "calculating", "frequency"]
# 切分文本中的单词
words = text.split()
# 计算关键词频率
freq = Counter(words)
# 输出关键词频率
for keyword in keywords:
print("Frequency of '{}' is: {}".format(keyword, freq[keyword]))
```
这段代码首先定义了一个包含关键词的列表,然后将文本切分成单词。接着,使用 `collections` 模块中的 `Counter` 函数计算每个单词的出现次数,并将结果存储在 `freq` 变量中。最后,使用一个简单的循环打印出关键词的频率。
相关问题
写一段代码计算分子片段出现的频率
以下是使用RDKit和Pandas计算分子片段频率的示例代码:
```python
from rdkit import Chem
import pandas as pd
# 读取分子文件
suppl = Chem.SDMolSupplier('molecules.sdf')
# 定义片段
fragments = ['C(=O)', 'C=C', 'C#N']
# 生成所有分子的指纹
fingerprints = [Chem.RDKFingerprint(m) for m in suppl if m is not None]
# 统计每个片段在所有指纹中出现的次数
counts = [sum([fp.HasSubstructMatch(Chem.MolFromSmarts(fragment)) for fp in fingerprints]) for fragment in fragments]
# 计算每个片段的频率
total_count = sum(counts)
frequencies = [count / total_count for count in counts]
# 输出结果
df = pd.DataFrame({'Fragment': fragments, 'Count': counts, 'Frequency': frequencies})
print(df)
```
该代码假设有一个名为“molecules.sdf”的分子文件,其中包含要处理的分子。在示例中,定义了三个片段,并使用RDKit的RDKFingerprint函数生成所有分子的指纹。然后,对于每个片段,使用HasSubstructMatch函数计算其在所有指纹中的出现次数。最后,将每个片段的出现次数除以总指纹数,以得到频率,并使用Pandas将结果输出到DataFrame。
写一段代码计算每个分子片段出现的频率
您可以使用上面计算出的 `count_dict` 字典,将每个分子片段出现的次数除以该分子的原子数,从而计算每个分子片段的频率。代码如下:
```python
freq_dict = {}
for idx, mol in enumerate(mols):
freq_dict[idx] = {}
atoms_num = mol.GetNumAtoms()
for submol_idx, submol in enumerate(submols):
if mol.HasSubstructMatch(submol):
submol_atoms_num = submol.GetNumAtoms()
freq = count_dict[mol.ToSmiles()][submol_idx] / (atoms_num - submol_atoms_num + 1)
freq_dict[idx][submol_idx] = freq
print(freq_dict)
```
这将输出一个字典,其中键为每个分子的索引(从 0 开始),值为一个字典,该字典的键为每个分子片段的索引(从 0 开始),值为该分子片段的频率。