保留正文与补采附件。源页面当前未重新核验;具体限制见交付清单。
We value your privacy
We use cookies to enhance your browsing experience, serve personalised ads or content, and analyse our traffic. By clicking "Accept All", you consent to our use of cookies.
Customise Reject All Accept All
Customise Consent Preferences
We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.
The cookies that are categorised as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... Show more
NecessaryAlways Active
Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.
Cookie BCTempID
Duration 10 minutes
Description No description available.
Cookie __cf_bm
Duration 1 hour
Description This cookie, set by Cloudflare, is used to support Cloudflare Bot Management.
Cookie AWSALBCORS
Duration 7 days
Description Amazon Web Services set this cookie for load balancing.
Cookie _cfuvid
Duration session
Description Cloudflare sets this cookie to track users across sessions to optimize user experience by maintaining session consistency and providing personalized services
Cookie li_gc
Duration 6 months
Description Linkedin set this cookie for storing visitor's consent regarding using cookies for non-essential purposes.
Cookie __hssrc
Duration session
Description This cookie is set by Hubspot whenever it changes the session cookie. The __hssrc cookie set to 1 indicates that the user has restarted the browser, and if the cookie does not exist, it is assumed to be a new session.
Cookie __hssc
Duration 1 hour
Description HubSpot sets this cookie to keep track of sessions and to determine if HubSpot should increment the session number and timestamps in the __hstc cookie.
Cookie wpEmojiSettingsSupports
Duration session
Description WordPress sets this cookie when a user interacts with emojis on a WordPress site. It helps determine if the user's browser can display emojis properly.
Cookie BCSessionID
Duration 1 year 1 month 4 days
Description Blueconic sets this cookie as a unique identifier for the BlueConic profile.
Cookie _octo
Duration 1 year
Description No description available.
Cookie logged_in
Duration 1 year
Description No description available.
Cookie __Secure-YEC
Duration past
Description YouTube sets this cookie to stores the user's video player preferences using embedded YouTube video
Cookie __eoi
Duration 6 months
Description Description is currently not available.
Cookie AWSALBTGCORS
Duration 7 days
Description No description available.
Cookie login-status-p
Duration past
Description Description is currently not available.
Cookie AWSALBTG
Duration 7 days
Description No description available.
Cookie csrf_token
Duration session
Description No description available.
Cookie token_v2
Duration 1 day
Description Description is currently not available.
Cookie D
Duration 1 year
Description Description is currently not available.
Cookie PHPSESSID
Duration session
Description This cookie is native to PHP applications. The cookie stores and identifies a user's unique session ID to manage user sessions on the website. The cookie is a session cookie and will be deleted when all the browser windows are closed.
Cookie VISITOR_PRIVACY_METADATA
Duration 6 months
Description YouTube sets this cookie to store the user's cookie consent state for the current domain.
Cookie cookietest
Duration session
Description The cookietest cookie is typically used to determine whether the user's browser accepts cookies, essential for website functionality and user experience.
Cookie __Host-airtable-session
Duration 1 year
Description This cookie is used to enable us to integrate the services of Airtable.
Cookie __Host-airtable-session.sig
Duration 1 year
Description This cookie is used to enable us to integrate the services of Airtable.
Cookie m
Duration 1 year 1 month 4 days
Description Stripe sets this cookie for fraud prevention purposes. It identifies the device used to access the website, allowing the website to be formatted accordingly.
Cookie BIGipServer*
Duration session
Description Marketo sets this cookie to collect information about the user's online activity and build a profile about their interests to provide advertisements relevant to the user.
Cookie __cfruid
Duration session
Description Cloudflare sets this cookie to identify trusted web traffic.
Cookie _GRECAPTCHA
Duration 6 months
Description Google Recaptcha service sets this cookie to identify bots to protect the website against malicious spam attacks.
Cookie __Secure-YNID
Duration 6 months
Description Google cookie used to protect user security and prevent fraud, especially during the login process.
Cookie cookieyes-consent
Duration 1 year
Description CookieYes sets this cookie to remember users' consent preferences so that their preferences are respected on subsequent visits to this site. It does not collect or store any personal information about the site visitors.
Functional Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.
Cookie lidc
Duration 1 day
Description LinkedIn sets the lidc cookie to facilitate data center selection.
Cookie brw
Duration 1 year
Description No description available.
Cookie brwConsent
Duration 5 minutes
Description Description is currently not available.
Cookie WMF-Uniq
Duration 1 year
Description Description is currently not available.
Cookie loom_anon_comment
Duration 1 year
Description No description available.
Cookie loom_referral_video
Duration session
Description Description is currently not available.
Cookie VISITOR_INFO1_LIVE
Duration 6 months
Description A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
Cookie yt-remote-connected-devices
Duration Never Expires
Description YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
Cookie ytidb::LAST_RESULT_ENTRY_KEY
Duration Never Expires
Description The cookie ytidb::LAST_RESULT_ENTRY_KEY is used by YouTube to store the last search result entry that was clicked by the user. This information is used to improve the user experience by providing more relevant search results in the future.
Cookie yt-remote-device-id
Duration Never Expires
Description YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
Cookie yt-remote-session-name
Duration session
Description The yt-remote-session-name cookie is used by YouTube to store the user's video player preferences using embedded YouTube video.
Cookie yt-remote-fast-check-period
Duration session
Description The yt-remote-fast-check-period cookie is used by YouTube to store the user's video player preferences for embedded YouTube videos.
Cookie yt-remote-session-app
Duration session
Description The yt-remote-session-app cookie is used by YouTube to store user preferences and information about the interface of the embedded YouTube video player.
Cookie yt-remote-cast-available
Duration session
Description The yt-remote-cast-available cookie is used to store the user's preferences regarding whether casting is available on their YouTube video player.
Cookie yt-remote-cast-installed
Duration session
Description The yt-remote-cast-installed cookie is used to store the user's video player preferences using embedded YouTube video.
Cookie cp_session
Duration 3 months
Description Codepen sets this cookie for Help systems found in the website.
Cookie loid
Duration 1 year 1 month 4 days
Description This cookie is set by the Reddit. The cookie enables the sharing of content from the website onto the social media platform.
Analytics Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.
Cookie __hstc
Duration 6 months
Description Hubspot set this main cookie for tracking visitors. It contains the domain, initial timestamp (first visit), last timestamp (last visit), current timestamp (this visit), and session number (increments for each subsequent session).
Cookie hubspotutk
Duration 6 months
Description HubSpot sets this cookie to keep track of the visitors to the website. This cookie is passed to HubSpot on form submission and used when deduplicating contacts.
Cookie _ga
Duration 1 year 1 month 4 days
Description Google Analytics sets this cookie to calculate visitor, session and campaign data and track site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors.
Cookie ga*
Duration 1 year 1 month 4 days
Description Google Analytics sets this cookie to store and count page views.
Cookie __Host-psifi.analyticsTrace
Duration 6 hours
Description Description is currently not available.
Cookie __Host-psifi.analyticsTraceV2
Duration 6 hours
Description Description is currently not available.
Cookie _gh_sess
Duration session
Description GitHub sets this cookie for temporary application and framework state between pages like what step the user is on in a multiple step form.
Cookie YSC
Duration session
Description YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
Cookie ajs_anonymous_id
Duration 1 year
Description This cookie is set by Segment to count the number of people who visit a certain site by tracking if they have visited before.
Cookie vuid
Duration 1 year 1 month 4 days
Description Vimeo installs this cookie to collect tracking information by setting a unique ID to embed videos on the website.
Performance Performance cookies are used to understand and analyse the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Cookie AWSALB
Duration 7 days
Description AWSALB is an application load balancer cookie set by Amazon Web Services to map the session to the target.
Cookie acq
Duration past
Description Description is currently not available.
Cookie acq.sig
Duration past
Description Description is currently not available.
Cookie ptc
Duration 2 years
Description No description available.
Advertisement Advertisement cookies are used to provide visitors with customised advertisements based on the pages you visited previously and to analyse the effectiveness of the ad campaigns.
Cookie muc_ads
Duration 1 year 1 month 4 days
Description Twitter sets this cookie to collect user behaviour and interaction data to optimize the website.
Cookie guest_id_marketing
Duration 1 year 1 month 4 days
Description Twitter sets this cookie to identify and track the website visitor.
Cookie guest_id_ads
Duration 1 year 1 month 4 days
Description Twitter sets this cookie to identify and track the website visitor.
Cookie personalization_id
Duration 1 year 1 month 4 days
Description Twitter sets this cookie to integrate and share features for social media and also store information about how the user uses the website, for tracking and targeting.
Cookie guest_id
Duration 1 year 1 month 4 days
Description Twitter sets this cookie to identify and track the website visitor. It registers if a user is signed in to the Twitter platform and collects information about ad preferences.
Cookie bcookie
Duration 1 year
Description LinkedIn sets this cookie from LinkedIn share buttons and ad tags to recognize browser IDs.
Cookie __Secure-ROLLOUT_TOKEN
Duration 6 months
Description YouTube sets this cookie to manage feature rollout and experimentation. It helps Google control which new features or interface changes are shown to users as part of testing and staged rollouts, ensuring consistent experience for a given user during an experiment.
Cookie yt.innertube::nextId
Duration Never Expires
Description YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.
Cookie yt.innertube::requests
Duration Never Expires
Description YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.
Cookie session_tracker
Duration session
Description This cookie is set by the Reddit. This cookie is used to identify trusted web traffic. It also helps in adverstising on the website.
Cookie edgebucket
Duration session
Description Reddit sets this cookie to save the information about a log-on Reddit user, for the purpose of advertisement recommendations and updating the content.
Cookie did
Duration 1 year
Description Arbor sets this cookie to show targeted ads to site visitors.This cookie expires after 2 months or 1 year.
Uncategorised Other uncategorised cookies are those that are being analysed and have not been classified into a category as yet. No cookies to display. Reject All Save My Preferences Accept All Toggle SearchToggle Mobile Navigation Publish AI, ML & data-science insights to a global community of data professionals. Sign inSubmit an Article LatestEditor's PicksNewsletterShipAI
Write For TDS LinkedInXToggle Search Data Science
Compared to sentiment analysis or classification, text summarisation is a far less ubiquitous NLP task due to the time and resources... Chua Chin Hon July 27, 20206 min read
Screen grabs from PAP.org.sg (left) and WP.sg (right).
Summarising a speech is more art than science, some might argue. But recent advances in NLP could well test the validity of that argument.
In particular, Hugging Face's (HF) transformers summarisation pipeline has made the task easier, faster and more efficient to execute. Admittedly, there's still a hit-and-miss quality to current results. But there are also flashes of brilliance that hint at the possibilities to come as language models become more sophisticated.
This post will demonstrate how you can easily use HF's pipeline to summarise both short and long speeches. A minor work-around is needed for long speeches due to the maximum sequence limit for models used in the pipeline. I've also included the code for a simple text summarisation web app that you can run on your local machine.
Learn this step by step with the interactive AI and Data Scientist, Machine Learning and Computer Science roadmaps.
Here's the Github repo for this post. The toy dataset used in this post is based on a small collection of political speeches/statements made during Singapore's General Election in July 2020. The word-count for the speeches, by politicians from the ruling People's Action Party (PAP) as well as the Opposition, range from 236 words to 3,746 words.
The simple workflow outlined in my notebook should work for any other collection of speeches you care to put together in a CSV file. The HF summarisation pipeline doesn't work for non-English speeches as far as I know.
I'm using the pipeline out of the box, meaning the results stem from the default bart-large-cnn model. Feel free to test with other models tuned for this task.
It is unlikely that anyone needs to batch run summaries of dozens or hundreds of short speeches in one go. But in the off-chance that you do, the HF pipeline's ease of use is a lifesaver.
Here, I ran the pipeline on seven speeches under 800 words. Results and time taken may vary according to the computer and version of the transformers library you are using.
This was run on a 2018 Mac Mini with 64Gb of RAM on version 2.11.0 of the transformers library. You can download the results here and compare the summaries with the original text:
Download this CSV file here.
Some of the summaries are so-so. There's a clear tendency for the model to use the first and second sentences in a speech. This could work well for summaries of news stories, but less so for those involving political/corporate speeches.
But the model turned up one brilliant summary, the fifth one where Workers' Party (WP) leader Pritam Singh laid out his party's main pitch to voters. See the original statement here, and here's a side-by-side comparison with the summary by the Bart model.
Image on left: Screen grab from WP.sg.
In just 59 words, the Bart model perfectly distilled the essence of the WP's campaign message from a 627-word statement. Those who are familiar with Singapore politics would appreciate how sharp this summary is, particularly given that the model was not tuned on data involving Singapore news or politics.
It is not unreasonable to ask whether this summary is a fluke or happy coincidence. I ran the same set of speeches through the latest version of transformers (version 3.0.2) and got a less impressive translation: "The workers party offers singaporeans a choice and an alternative voice in parliament . The wp has contributed significantly to the democratic processes in our country . Former pap mps who wrote their memoirs after have helped to expose the limitations of a parliament dominated by the pap".
Consistency of quality appears to be a problem at this point. A fuller test, unfortunately, is outside the scope of this post.
This is likely the use case for most people: Summarising a long speech running into thousands of words. To get around the sequence length limits in the pipeline/models, I used a function to break up the text into a number of chunks of fixed-character length.
To keep this post concise, I decided to run the HF pipeline on the longest speech - 3,746 words - in the toy dataset. I broke up the speech into 9 chunks of 2,500 characters each.
The function allows you to easily set the character length that you prefer. This approach is admittedly clumsy, but I find it useful for a closer inspection of the results. Details are in my notebook.
Here's the link to the original speech, and a CSV file comparing the original text with the mini-summaries can be dowloaded [here](http://A CSV file comparing the original text with the mini-summaries can be dowloaded here). This is a side-by-side comparison of how the model summarised it :
Image on left: Screen grab from Pap.org.sg. Download the CSV results file of the long-speech summarisation here.
The 536-word "combined summary" is not as brilliant as the WP example I highlighted above, but it's pretty decent (except for the section highlighted in red, which I'll discuss in a bit) for a first draft. If I'm in a crunch, this is something I can quickly edit into a more useable form.
Singaporean users will easily pick out an obvious mistake in the summary of the sixth section: "Pap Lee Kuan Yew seeks not just your mandate but your strong mandate to lead singapore through this crisis."
The original paragraph reads: "Investors will scrutinise the election results, and act on their conclusions. So will others, both friends and adversaries of Singapore. That is why in this election, the PAP seeks not just your mandate, but your strong mandate, to lead Singapore through this crisis."
Lee Kuan Yew, Singapore's founding prime minister, died in March 2015. However, those with more than a passing knowledge of Singapore politics might flippantly argue that the model was in fact correct and not erroneous with the above summary mentioning Lee Kuan Yew. But that is a discussion for another day ;p.
I tried to deploy a simple web app to let non-notebook users try the summarisation pipeline, but discovered that free accounts on Pythonanywhere.com don't have enough storage space for the libraries required, particularly pytorch.
So instead I uploaded a version that runs on local machines, if you are keen to let colleagues at the workplace try it out. The code for the web app was adapted from two sources: the main one from Github and a second one by Plotly using DistilBart.
If the app returns an error, it means the text you've copied has exceeded the maximum number of tokens. Try summarising in smaller chunks or use the function in the notebook to break up the text. I'll try to deploy the app online in future if Pythonanywhere.com includes pytorch as part of their pre-installed packages.
With more language models being added by the week, there's ample scope for experimentation and more robust tests of the HF pipeline's summarisation output. My own experience so far is that using a different model doesn't necessarily translate into better results. Towards the end of my notebook, I switched to the T5 model for a trial but found that the summarisations for three short speeches weren't better than those churned out by the default Bart model. But we are certainly getting a good glimpse of the future possibilities as companies like Hugging Face and OpenAI continue to push the NLP envelope. I'm certainly curious to see how GPT-3 performs on this task, given the impressive results it has achieved on a diverse range of tasks so far. Meanwhile, those who want to experiment further by fine tuning a transformer model with their own dataset can check out these two notebooks [here](https://github.com/abhimishra91/transformers-tutorials/blob/master/transformers_summarization_wandb.ipynb) and here. Finding a good dataset for your use case, however, could be more challenging than you think. If you spot errors in this post or the notebook, ping me at: Twitter: Chua Chin Hon LinkedIn: www.linkedin.com/in/chuachinhon
All articles on Towards Data Science are available to registered users. Create a free account today to access this article and thousands more. Register for freeSign in to your account
Written By
See all from Chua Chin Hon Data ScienceHugging FaceNLPScienceSingapore Share This Article
Towards Data Science is a community publication. Submit your insights to reach our global audience and earn through the TDS Author Payment Program. Write for TDS
Data Science A template to follow to get you started analyzing data with Python and Pandas. Gustavo Santos November 29, 20211 min read
Data Science Thermal Sharpening of Sentinel-3 Images: From 1 Km to 10 m Using Python in Google Colab Mahyar Aboutalebi March 6, 202413 min read
Machine Learning Import Python libraries, manipulate and output SQL tables and more, all without leaving SQL server. Sasha Korovkina May 15, 20244 min read
Artificial Intelligence From years to nanoseconds. Soner Yıldırım January 15, 20226 min read
Data Science Simple design elements to make your spreadsheets pop Alana Pirrone July 27, 20214 min read
Data Science An algorithm that determines the most effective randomization points for a switchback experiment. Michael Berk June 8, 20219 min read
Data Science Simple and comprehensive explanations of different statistical concepts Chi Nguyen June 7, 20227 min read
Machine Learning Learn how to work with the h2o library using the R Language Ivo Bernardo November 2, 202215 min read
Data Science Save money and frustration by considering the roles of analysts, data engineers, and software engineers... Adam Sroka April 26, 20217 min read
Your home for data science and AI. The world's leading publication for data science, data analytics, data engineering, machine learning, and artificial intelligence professionals. Subscribe to Our NewsletterWrite For TDS•About•Advertise•Privacy Policy•Terms of Use © Insight Media Group, LLC 2026•The New Stack•roadmap.sh•Creator Network
Close