The task is to generate a summary of financial news related to specific stock symbols by pulling recent news articles. After generating the summary, it compares the summary to a reference summary using the **BLEU score**, which is a common metric for evaluating the quality of text summaries or translations.
The key objectives are:
1. **Fetch financial news articles**: Gather recent news articles related to stocks and combine the article content into a single document.
2. **Summarize the articles**: Automatically generate a summary from the combined news content using text clustering.
3. **Evaluate the summary**: Compare the generated summary with a provided reference summary using the **BLEU score** to measure how close the generated summary is to the reference.
### Solution
1. **Fetching Financial News Articles**:
- The script uses the `NewsAPI` to fetch news articles related to stock symbols. These symbols are retrieved by the function `get_stocks_with_news`.
- Articles are filtered to keep only those with valid titles and descriptions, and their content is combined into a single document. The text is pulled from articles published between August 17, 2023, and September 1, 2023.
2. **Generating a Summary**:
- The script then breaks the document into sentences using **sentence tokenization** and cleans the sentences by tokenizing words and removing stopwords (common words like "the", "and").
- A **similarity matrix** is built, which calculates the similarity between every pair of sentences using cosine distance. This helps in clustering similar sentences together.
- The sentences are grouped into clusters using **KMeans clustering**, and from each cluster, representative sentences are chosen to form the summary.
- The summary is composed of the key sentences from these clusters, attempting to cover the most important points from the news articles.
3. **Evaluating the Summary**:
- A **reference summary** is provided (manually written or taken from reliable sources).
- The generated summary is compared to the reference summary using the **BLEU score**. This score measures how well the generated summary matches the reference by looking at the overlap of words and phrases between the two summaries.
- A BLEU score is then calculated and printed, which provides a numerical evaluation of the quality of the generated summary.
4. **Results**:
- The generated summary is printed, followed by the reference summary and the **BLEU score**.
- A higher BLEU score would indicate that the generated summary closely matches the reference, while a lower score would suggest that the generated summary deviates significantly from the expected content.
### Interpretation of the BLEU Score
- The **BLEU score** ranges from 0 to 1, where:
- 1 means the generated summary is a perfect match with the reference summary.
- 0 means there is no similarity between the generated summary and the reference.
- In this case, the BLEU score helps assess how accurately the summarization model captures the key points compared to a human-generated or reference summary.
This process offers a systematic approach to summarizing financial news and evaluating the quality of the summaries in a measurable way.