trends.py
#!/usr/bin/env python3
import arxiv
import argparse
import json
from collections import defaultdict
def main():
parser = argparse.ArgumentParser(description="Research trends analysis")
parser.add_argument("topic", help="Research topic")
parser.add_argument("--years", help="Year range (e.g., 2019-2024)")
args = parser.parse_args()
# 构建搜索查询
search_query = args.topic
if args.years:
start_year, end_year = args.years.split('-')
search_query = f"{search_query} AND submittedDate:[{start_year}0101 TO {end_year}1231]"
# 搜索论文
search = arxiv.Search(
query=search_query,
max_results=200,
sort_by=arxiv.SortCriterion.SubmittedDate
)
# 分析年度趋势
year_counts = defaultdict(int)
category_counts = defaultdict(int)
for result in search.results():
year = result.published.year
year_counts[year] += 1
for category in result.categories:
category_counts[category] += 1
# 输出结果
output = {
"topic": args.topic,
"years": args.years,
"total_papers": sum(year_counts.values()),
"yearly_trend": dict(sorted(year_counts.items())),
"top_categories": sorted(category_counts.items(), key=lambda x: x[1], reverse=True)[:10]
}
print(json.dumps(output, indent=2))
if __name__ == "__main__":
main()